SQL. Вывод нулевых значений через COUNT
Есть таблица: ученики, оценки
Необходимо вывести: количество двоек у учеников у которых больше 4 пятерок
У меня не получается вывести тех учеников, у которых есть 5+ пятерок, но нет двоек. Т.е где COUNT(GRADE) равен 0, мой запрос не выводит его.
STUDENT_NAME | COUNT(GRADE)
Petrov | 0
Bashirov | 2
Мой код
SELECT STUDENT_NAME, COUNT(GRADE)
FROM GRADES
WHERE STUDENT_NAME IN (SELECT STUDENT_NAME FROM GRADES WHERE GRADE = 5 GROUP BY STUDENT_NAME HAVING COUNT(GRADE) >= 5)
AND GRADE = 2
GROUP BY STUDENT_NAME
Также вопрос: есть ли возможность решить задачу без использования подзапросов? Через CASE?
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
количество двоек у учеников у которых больше 4 пятерок
Ну обычная же условная агрегация.
Для MySQL:
SELECT student_name, SUM(grade = 2)
FROM grades
GROUP BY student_name
HAVING SUM(grade = 5) > 4
Для других СУБД - заменить сравнение на CASE.