Задача про учеников, у которых надо подсчитать кол-во двоек!

Задача: Необходимо вывести имя и количество двоек, у тех людей, у которых больше десяти 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 шт):

Автор решения: Герман Борисов
  1. Чтоб не исчезали имена без двоек, нужно использовать LEFT/RIGHT, а не INNER JOIN.

  2. Чтоб заменить 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;
→ Ссылка