Задача про учеников, у которых надо подсчитать кол-во двоек!
Задача: Необходимо вывести имя и количество двоек, у тех людей, у которых больше десяти 5. Учитывая что те кто имеют десять 5, могут не иметь двоек. Как делать так чтоб у тех у кого нет двоек, был 0 например?? По итогу выполнения кода ниже, получаю имя и количество двоек, но не людей, у которых нет двоек
WITH t1 AS (
SELECT name
FROM marks
WHERE mark = 5
GROUP BY name
HAVING COUNT(mark) > 10
)
SELECT m1.name, COUNT(m1.mark)
FROM marks m1
JOIN t1 ON t1.name = marks.name
WHERE mark = 2
GROUP BY m1.name;
`
Ответы (1 шт):
Автор решения: Герман Борисов
→ Ссылка
Чтоб не исчезали имена без двоек, нужно использовать
LEFT/RIGHT, а неINNERJOIN.Чтоб заменить
NULLна 0 можно использоватьCOALESCE.
WITH t1 AS (
SELECT name
FROM marks
WHERE mark = 5
GROUP BY name
HAVING COUNT(mark) > 10
)
SELECT m1.name, COALESCE(COUNT(m1.mark), 0)
FROM t1
LEFT JOIN marks m1 ON t1.name = m1.name AND m1.mark = 2
GROUP BY m1.name;