Questão FC372845
Tabela Consumidor: idConsumidor nomeConsumidor cpfConsumidor 1 Paulo Vieira Lima 156.167.178-2 2 Marcos Santana Silva 234.156.765-12 3 Maria de Fátima Caetano Rosa 187.198.056-7 4
Linguagem SQL
FCC · 2019

Tabela Consumidor:
idConsumidor nomeConsumidor cpfConsumidor
1 Paulo Vieira Lima 156.167.178-2
2 Marcos Santana Silva 234.156.765-12
3 Maria de Fátima Caetano Rosa 187.198.056-7
4 Zoraide Pereira Mota 238.765.234-12
Tabela Fatura:
idFatura idConsumidor mesRefFatura DataVencFatura numHidrometroFatura medidaConsumo
3365693 1 05/2019 2019-05-20 344036 80
3366691 2 05/2019 2019-05-10 345681 120
3367690 1 04/2019 2019-04-28 344036 89
3390871 2 03/2019 2019-03-18 345681 100
Tabela ItemFatura:
idItemFatura idFatura descItemFatura valorItemFatura
1 3365693 Captação de água bruta 0.1
1 3366691 Tratamento de água 90
1 3367690 Tratamento de água 61.23
2 3365693 Tratamento de água 60.19
2 3366691 Tratamento de esgoto 67.67
3 3365693 Coleta de esgoto 47.35
3 3366691 Afastamento de esgoto 80
4 3365693 Tratamento de Esgoto 25
Um Analista de Suporte de Banco de Dados digitou um comando SQL que exibiu o número de faturas que cada consumidor possuía cadastradas no banco de dados, conforme mostrado abaixo.
nomeConsumidor numeroFaturas
Paulo Vieira Lima 2
Marcos Santana Silva 2
Maria de Fátima Caetano Rosa 0
Zoraide Pereira Mota 0
O comando correto utilizado para exibir os dados foi
- SELECT nomeConsumidor FROM Consumidor c JOIN Fatura f (COUNT(f.idFatura) ) AS numeroFaturas ON (f.idConsumidor = c.idConsumidor);
- SELECT nomeConsumidor, (SELECT COUNT(idFatur) FROM Fatura WHERE idConsumidor = c.idConsumidor) FROM Consumidor c;
- SELECT nomeConsumidor FROM Consumidor c JOIN Fatura f ON (SELECT COUNT(f.idFatura) FROM Fatura f WHERE f.idConsumidor = c.idConsumidor) AS numeroFaturas;
- SELECT nomeConsumidor, (SELECT f.idFatura FROM Fatura f WHERE f.idConsumidor = c.idConsumidor) as numeroFaturas FROM Consumidor c;
- SELECT nomeConsumidor, (SELECT COUNT(f.idFatura) FROM Fatura f WHERE f.idConsumidor = c.idConsumidor) as numeroFaturas FROM Consumidor c;
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A instrução apresentada exibe duas colunas: nomeConsumidor e numeroFaturas. A segunda é preenchida por uma subconsulta correlacionada que retorna, para cada consumidor, a quantidade de faturas cadastradas.
O trecho (SELECT COUNT(f.idFatura) FROM Fatura f WHERE f.idConsumidor = c.idConsumidor) conta as linhas da tabela Fatura cujo idConsumidor coincide com o do registro atual de Consumidor c. Por ser correlacionada, essa subconsulta é avaliada uma vez para cada linha da tabela externa.
O uso de COUNT garante que, quando não houver faturas, o resultado será 0, apresentando corretamente consumidores sem faturas. Por fim, o alias as numeroFaturas nomeia a coluna resultante na saída.
Conteúdo do catálogo FC Concursos · Atualizado em