Escreva o códigoPráticaSQL
Cidades em alta em 2024
Combinar WHERE com GROUP BY e HAVING com ordem.
Da tabela vendas, fique só com o ano igual a 2024, agrupe por cidade e conte as linhas como total_vendas. Devolva as colunas cidade e total_vendas só para cidades com mais de 1 venda, em ordem decrescente de total_vendas. Em caso de empate, ordene cidade em ordem crescente.
Revisa etapa da trilha 6, etapa da trilha 7
Solução comentada
Verifique uma tentativa sua para liberar a solução.
SELECT cidade, COUNT(*) AS total_vendas FROM vendas WHERE ano = 2024 GROUP BY cidade HAVING COUNT(*) > 1 ORDER BY total_vendas DESC, cidade ASCWHERE ano = 2024 filtra as linhas antes de agrupar. GROUP BY cidade com COUNT(*) conta as vendas por cidade e HAVING mantém só quem tem mais de 1. ORDER BY total_vendas DESC deixa a cidade com mais vendas primeiro. O segundo critério, cidade ASC, desempata a contagem.
Erro comum: Usar WHERE para filtrar a contagem em vez de filtrar o ano com WHERE e a contagem com HAVING.
Tabelas
vendas 10 linhas
| id | categoria | cidade | valor | ano |
|---|---|---|---|---|
| 1 | calcados | sao paulo | 120 | 2024 |
| 2 | calcados | sao paulo | 80 | 2024 |
| 3 | vestuario | rio de janeiro | 50 | 2024 |
| 4 | vestuario | rio de janeiro | 40 | 2024 |
| 5 | vestuario | belo horizonte | 30 | 2023 |
| 6 | eletronicos | sao paulo | 500 | 2024 |
| 7 | eletronicos | rio de janeiro | NULL | 2024 |
| 8 | livros | sao paulo | 25 | 2024 |
| 9 | livros | sao paulo | 25 | 2024 |
| 10 | livros | curitiba | 20 | 2023 |
Escreva sua solução e verifique quando quiser.