# Session Five: Checkin | SQL
Autora: Isabela Silva Sousa
[toc]
>[color=purple]Mapa mental

# Agrupamento de Registros
## GROUP BY
>[color=black]
>- Usamos a cláusula GROUP BY para agrupar registros em subgrupos baseados em colunas ou valores retornados por uma expressão.
- **Sintaxe básica** :
```sql=
SELECT colunas, função_agregação()
FROM tabela
WHERE filtro
GROUP BY colunas
```
- **Criar tabela para teste de GROUP BY**
```sql=
CREATE TABLE Vendas (
ID Smallint primary key,
NOME_Vendedor varchar(20),
Quantidade int,
Produto varchar(20),
Cidade varchar (20)
);
```
## Usando o GROUP BY
```sql=
--Consulta usando agregação para obter total de vendas de mouses :
SELECT Cidade, SUM (quantidade) AS TotalMouses
FROM Vendas
WHERE Produto = "Mouse"
```
```sql=
--Consulta totalizando as vensdas de todos os produtos por cidade:
SELECT Cidade, SUM (quantidade) AS Total
FROM Vendas
GROUP BY Cidade;
```
>[color=black]exemplo

>[color=black]
>- **É importante** fazer o **agrupamento**, pois caso não faça o agrupamento o resultado do seu select sai errado.
# HAVING
## Filtrando resultados do agrupamento
>[color=purple]
>- A cláusula usada para especificar condições de filtragem em grupos de registros ou agregações.
>É frequentemente usada com a cláusula GROUP BY para as colunas agrupadas.
- **Sintaxe :**
```sql=
SELECT colunas, função_agregação()
FROM tabela
WHERE filtro
GROUP BY colunas
HAVING filtro_agrupamento
```
## HAVING EX.1
```sql=
--Consulta retornando total de vendas das cidades com menos de 2500 produtos:
SELECT Cidade, SUM (quantidade) AS Total
FROM Vendas
GROUP BY Cidade
HAVING SUM (quantidade) <2500;
```
## HAVING EX.2
```sql=
--Consulta retornando total de vendas do 'teclado' das cidades com menos de 1500 teclados vendidos:
SELECT Cidade, SUM (quantidade) AS Totalteclados
FROM Vendas
WHERE Produto = 'teclado'
GROUP BY Cidade
HAVING SUM (quantidade) <1500;
```
{"metaMigratedAt":"2023-06-16T02:46:16.358Z","metaMigratedFrom":"Content","title":"Session Five: Checkin | SQL","breaks":true,"contributors":"[{\"id\":\"efa8ac71-fa69-4ab5-8a89-20016d037e45\",\"add\":2050,\"del\":49}]"}