1
resposta

Outra resolução

Olá, boa noite, optei por utilizar a função extract para recuperar o ano, está correto?

SELECT ('O Cliente ' ||  CLI.NOME || ' faturou ' || ROUND(SUM(PRECO * QUANTIDADE),2) ||  ' R$ no ano de ' || EXTRACT(YEAR FROM NF.DATA_VENDA))
FROM TABELA_DE_CLIENTES CLI
INNER JOIN NOTAS_FISCAIS NF ON CLI.CPF = NF.CPF
INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO
WHERE EXTRACT(YEAR FROM NF.DATA_VENDA) = 2016
GROUP BY CLI.NOME, EXTRACT(YEAR FROM NF.DATA_VENDA);

outra opção seria

SELECT ('O Cliente ' ||  CLI.NOME || ' faturou ' || ROUND(SUM(PRECO * QUANTIDADE),2) ||  ' R$ no ano de 2016' )
FROM TABELA_DE_CLIENTES CLI
INNER JOIN NOTAS_FISCAIS NF ON CLI.CPF = NF.CPF
INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO
WHERE EXTRACT(YEAR FROM NF.DATA_VENDA) = 2016
GROUP BY CLI.NOME;

Pois a data ja está explicitada no where.

Uma sugestão para ficar mais claro o enunciado:

Queremos construir um SQL cujo resultado seja, para cada cliente:

"O cliente 'x' faturou 'x' no ano de 'yyyy'." (exibir com duas casas decimais)

Faça isso somente para o ano de 2016.

É difícil de acontecer mas a pessoa poderia ter um erro de interpretação e fazer algo do tipo

SELECT ('O cliente João da Silva faturou 120000 no ano de 2016')
FROM TABELA_DE_CLIENTES 

Uma outra dúvida que fiquei, no caso não seria o quanto ele gastou em vez de faturou, pois trata-se do cliente e não do fornecedor.

1 resposta

Oiii Gabriel, tudo bem?

Desculpe por demorar a te responder.

Sua opção utilizando a função extract para recuperar o ano está correta e é uma boa prática. Dessa forma, caso seja necessário alterar o ano da consulta, basta mudar o valor no where.

Já a expressão "faturou", pode ser utilizada para ambos os casos :)

Obrigada por compartilhar suas resoluções com o fórum!

Abraços.