Imagine que você está organizando uma Festa em uma Balada.
1. O WHERE é o Segurança na Porta (Filtra Indivíduos) 🛑
O WHERE trabalha antes da festa começar. Ele olha para cada pessoa na fila individualmente.
- Regra: "Só entra quem for maior de 18 anos".
- Ação: O segurança barra o Joãozinho (15 anos). Ele nem entra. Ele não faz parte da festa.
- No SQL: O
WHERE elimina as linhas da tabela original antes de qualquer cálculo ser feito.
Código: WHERE Idade >= 18
2. O GROUP BY são as Mesas (Organiza a Festa) 👯
As pessoas entraram (passaram pelo WHERE). Agora elas se sentam em mesas.
- Mesa dos Solteiros.
- Mesa dos Casados.
- Mesa dos Estudantes.
3. O HAVING é o Garçom (Filtra Grupos) 💰
O HAVING trabalha depois que a festa já rolou. Ele olha para a Mesa Inteira (o grupo), e não para as pessoas individuais.
- Regra: "Só ganha desconto a mesa que gastou mais de R$ 500,00 no total".
- Ação: O garçom olha a comanda da Mesa dos Solteiros. Deu R$ 300,00. Eles estão fora da promoção.
- Detalhe: Não importa se uma pessoa na mesa gastou muito. O que importa é o total do grupo.
- No SQL: O
HAVING elimina o grupo baseado no resultado de uma agregação (SUM, COUNT, AVG).
Código: HAVING SUM(Gasto) > 500