Corrija o bugPráticaSQL
Separar o filtro de preço da contagem do grupo
Corrigir a posição de um filtro agregado mantendo o filtro das linhas.
Considere somente cursos com preco maior ou igual a 100. A consulta deveria devolver categoria e qtd, nessa ordem, apenas para categorias com pelo menos 2 desses cursos. O filtro de contagem foi colocado no lugar errado. Corrija a consulta mantendo o filtro de preço antes do agrupamento.
Revisa aula 14 (10/09)
Solução comentada
Verifique uma tentativa sua para liberar a solução.
SELECT categoria, COUNT(*) AS qtd FROM cursos WHERE preco >= 100 GROUP BY categoria HAVING COUNT(*) >= 2;WHERE preco >= 100 escolhe as linhas antes de formar os grupos. GROUP BY categoria reúne os cursos restantes, e HAVING COUNT(*) >= 2 mantém categorias com pelo menos dois desses cursos. Filtrar a contagem no WHERE não é válido.
Erro comum: Mover também o filtro de preço para HAVING ou contar cursos antes de filtrar seu preço.
Tabelas
cursos 10 linhas
| id | nome | categoria | preco | carga_horaria |
|---|---|---|---|---|
| 1 | Python basico | programacao | 120 | 40 |
| 2 | Python avancado | programacao | 180 | 40 |
| 3 | Banco de dados | programacao | 150 | 30 |
| 4 | Ingles basico | idiomas | 100 | 60 |
| 5 | Ingles avancado | idiomas | 100 | 60 |
| 6 | Espanhol basico | idiomas | NULL | 40 |
| 7 | Yoga manha | saude | 80 | 20 |
| 8 | Yoga noite | saude | 90 | 20 |
| 9 | Pilates | saude | 200 | 20 |
| 10 | Desenho | arte | 200 | 30 |
O código ao lado tem um bug. Encontre, corrija e verifique.