Questão
ID 631244Disciplina: Tecnologia da Informação
Assunto: Select
Ano: 2022 Banca: FGV - Fundação Getúlio Vargas Órgão: Controladoria-Geral da União
ATENÇÃO! Para resolver as duas próximas questões, considere as tabelas cliente e visita, conforme as instâncias exibidas a seguir.
cliente
codigo |
310 |
312 |
314 |
316 |
visita
codigo | data |
310 | 2022/03/01 |
312 | 2022/03/01 |
312 | 2022/03/10 |
310 | 2022/03/11 |
314 | 2022/03/11 |
312 | 2022/03/11 |
312 | 2022/03/11 |
314 | 2022/04/05 |
312 | 2022/04/07 |
João deve produzir um relatório que mostra o número de visitas ao site da empresa de cada cliente a cada mês. Mesmo os clientes que não visitaram o site devem ser contabilizados.
O conteúdo do relatório, de acordo com as instâncias das tabelas cliente e visita, descritas anteriormente, é exibido a seguir.
codigo | mês | visitas |
310 | 3 | 2 |
310 | 4 | 0 |
312 | 3 | 3 |
312 | 4 | 1 |
314 | 3 | 1 |
314 | 4 | 1 |
316 | 3 | 0 |
316 | 4 | 0 |
João considerou três scripts SQL para produzir esse relatório.
I.
select c.codigo cliente, month(v.data) mês,
____count(distinct v.data) frequencia
from cliente c LEFT JOIN visita v
__on c.codigo = v.codigo
group by c.codigo, month(data)
order by 1,2
II.
select c.codigo cliente, month(v.data) mês,
____count(distinct v.data) frequencia
from cliente c INNER JOIN visita v
on c.codigo = v.codigo
group by c.codigo, month(data)
UNION
select distinct c.codigo cliente,
____month(v.data) mês, 0 frequencia
from cliente c, visita v
where not exists
___(select * from visita v2
___where v2.codigo=c.codigo
____and month(v2.data)=month(v.data))
order by 1,2
III.
select c.codigo, m.mês,
____(select count(distinct v.data)
______from visita v
______where month(v.data) = m.mês
________and v.codigo = c.codigo) frequencia
from
(select distinct month(data) mês from visita) m,
(select distinct codigo from cliente) c
order by 1, 2
Produz(em) o resultado corretamente somente o(s) script(s):