Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

SELECT COUNT(*)

Não entendi bem o exemplo onde faz "SELECT CPF, (SELECT COUNT(*) FROM [dbo].ListaNotasCliente) AS NUM_NOTA FROM [TABELA DE CLIENTES]". O select numa subquery ok, mas esse outro select entre "()" não compreendi direito. Tem algum material onde tenha explicação mais detalhada sobre este tipo de uso?

2 respostas
solução!

Boa noite Vinicius.

Não compreendi muito bem a sua dúvida, entretanto tentarei explicar de forma mais clara os ensinamentos do professor Victorino.

No vídeo é passado um exemplo sobre o uso de funções como tabela e logo em seguida ele demonstra a utilização em subqueries. No caso, as subqueries podem ser utilizadas basicamente de 2 maneiras: com retorno de apenas um valor ou retorno de tabelas.

No exemplo abaixo é possivel observar o uso de uma subquery retornando apenas um valor, e este sendo agregado ao retorno como coluna. A subquery utiliza o valor da coluna CPF para passar os valores para a função ListaNotasCliente, retornado o valor unico de quantidade de notas (COUNT(*))

SELECT CPF,
     (SELECT COUNT(*) FROM [dbo].[ListaNotasCliente](CPF)) AS NUM_NOTA 
FROM [TABELA DE CLIENTES]

Já no exemplo abaixo o professor Victorino exemplificou o uso de um subquery como tabela, onde o primeiro retorno da subquery retorna uma tabela, sendo ela nomeada como A e o segundo subquery retornando outra tabela nomeando a como B. Para finalizar, ainda foi feito o INNER JOIN da tabela A com a tabela B.

SELECT A.CPF, 
        A.NUM_NOTA, 
        B.TOTAL_FATURAMENTO
FROM (
    SELECT CPF,
     (SELECT COUNT(*) FROM [dbo].[ListaNotasCliente](CPF)) AS NUM_NOTA 
    FROM [TABELA DE CLIENTES]
) A
INNER JOIN (
    SELECT CPF, 
            SUM([dbo].[FaturamentoNota(NUMERO)) AS TOTAL_FATURAMENTO
    FROM [NOTAS FISCAIS] 
    GROUP BY CPF
) B
ON A.CPF = B.CPF

Recorde que sempre costumamos chamar o retorno de um SELECT de tabelas. Dessa forma, facilita o entendimento de que se pode utilizar o retorno de uma query para "cruzamentos" com outras tabelas, assim como demonstrado acima.

Caso ainda tenha dúvidas, não hesite e perguntar.

Atenciosamente, Nicholas Góes.

Esclareceu minha dúvida sim, Nicholas. Obrigado.