Corrija o bugPráticaSQL
Corrigir agrupamento por nivel
Corrigir a consulta que agrupa pela coluna nome em vez de nivel.
A consulta abaixo tenta contar quantos cursos existem por nivel da tabela cursos, mas agrupa pela coluna nome. Corrija o GROUP BY para devolver nivel e total nessa ordem com a contagem por nivel.
Revisa aula 13 (03/09)
Solução comentada
Verifique uma tentativa sua para liberar a solução.
SELECT nivel, COUNT(*) AS total FROM cursos GROUP BY nivel;O GROUP BY define as gavetas que o COUNT(*) vai contar, então precisa usar a mesma coluna que aparece no SELECT. Como a consulta agrupava por nome, cada curso virava um grupo de tamanho 1. Agrupando por nivel os cursos com iniciante caem na mesma gaveta e a contagem fica correta.
Erro comum: Manter o GROUP BY nome e continuar contando um curso por grupo em vez de agrupar por nivel.
Tabelas
alunos 6 linhas
| id | nome | plano |
|---|---|---|
| 1 | Ana | Premium |
| 2 | Beto | Pro |
| 3 | Carol | Basico |
| 4 | Diego | Premium |
| 5 | Elisa | Pro |
| 6 | Fabio | Basico |
cursos 4 linhas
| id | nome | nivel |
|---|---|---|
| 1 | Analise | iniciante |
| 2 | Dados | iniciante |
| 3 | IA Avancada | avancado |
| 4 | Redes | intermediario |
matriculas 8 linhas
| id | status | valor_pago |
|---|---|---|
| 1 | ativa | 500 |
| 2 | ativa | 700 |
| 3 | concluida | 1200 |
| 4 | concluida | 800 |
| 5 | cancelada | 0 |
| 6 | ativa | 500 |
| 7 | concluida | NULL |
| 8 | cancelada | 200 |
O código ao lado tem um bug. Encontre, corrija e verifique.