SQL HAVING Clause (Português)

O que faz a cláusula HAVING numa consulta?

A cláusula HAVING é como WHERE mas funciona em registos agrupados devolvidos por um GRUPO BY.
HAVING aplica-se a registos de grupo resumidos, enquanto que WHERE se aplica a registos individuais.
Apenas os grupos que cumprem os critérios HAVING serão devolvidos.

HAVING requer que uma cláusula GROUP BY esteja presente.
Bem ONDE e HAVING podem ser utilizados na mesma consulta ao mesmo tempo.

A sintaxe SQL HAVING

A sintaxe geral é

SELECT column-names FROM table-name WHERE condition GROUP BY column-namesHAVING condition
A sintaxe geral com ORDER BY é:
SELECT column-names FROM table-name WHERE condition GROUP BY column-namesHAVING condition ORDER BY column-names
th>CUSTOMERbr>>p>Id>/p>>br>>p>PrimeiroNomebr>>p>PrimeiroNomebr>p>Cidadebr>>p>Paísbr>p>Telefonebr>>>/div>

SQL GROUP BY Exemplos

Problema: Listar o número de clientes em cada país.
Inclua apenas os países com mais de 10 clientes.
SELECT COUNT(Id), Country FROM Customer GROUP BY CountryHAVING COUNT(Id) > 10
Resultado: 3 registos
Count Country
11 France
11 Alemanha
13 USA
>br>>>>cliente>br>>p>Id>/p>>br>>p>p>PrimeiroNome>br>>p>PrimeiroNomebr>>p>Cidadebr>>p>Paísbr>p>Telefonebr>>>>br>>/div>

Problema: Lista o número de clientes em cada país,
excepto os EUA, classificados de alto a baixo.
incluir apenas os países com 9 ou mais clientes.
SELECT COUNT(Id), Country FROM Customer WHERE Country 'USA' GROUP BY CountryHAVING COUNT(Id) >= 9 ORDER BY COUNT(Id) DESC
Resultado: 3 registos
Count Country
11 France
11 Alemanha
9 Brasil
>ordembr>>p>Idbr>p>p>Data de Ordembr>p>p>Número de Ordembr>p>p>Clientebr>>p>p>TotalAmountbr>>>>cliente>br>>p>>Id>/p>>br>>p>PrimeiroNomebr>p>p>PrimeiroNomebr>p>PrimeiroNomebr>p>Cidadebr>>p>Paísbr>>p>p>Telefonebr>>/div>

Problema: Listar todos os clientes com encomendas médias
entre $1000 e $1200.

SELECT AVG(TotalAmount), FirstName, LastName FROM O JOIN Customer C ON O.CustomerId = C.Id GROUP BY FirstName, LastNameHAVING AVG(TotalAmount) BETWEEN 1000 AND 1200
Resultado: 10 registos

>1081.215000>Miguel>Angel Paolino>/tr>>>>tr>>>>1063.420000>Isabel>>de Castro>/tr>>>>>tr>>>1008.440000

>>>1062.038461

Pirkko

>Limeira

>>>1073.621428

>Moreno

>>>1065.385000>Rita>Müller

>>1183.010000>JoséPedro Freyre >>>1057.386666

>Schmitt

Average FirstName LastName
Alexander Feuer
Thomas Hardy
1107.806666 Koskitalo
1174.945454 Janete
Antonio
Carine

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *