СВОДНАЯ группа SQL по 2 столбцам

#sql #stored-procedures #pivot-table

#sql #хранимые процедуры #сводная таблица

Вопрос:

У меня есть таблица посещаемости, как показано ниже, я хочу сгруппировать их по времени и разделу, статус null означает, что сотрудник отсутствует :

введите описание изображения здесь

Есть идеи, как сгенерировать вывод, как показано ниже?

введите описание изображения здесь

мой текущий код :

 SELECT TIME,COUNT(SECTION) AS SECTION,COUNT(STATUS) AS COUNT 
FROM attendance_record
GROUP BY TIME,SECTION
ORDER BY TIME
 

Ответ №1:

Если я понимаю ваш вопрос, просто используйте условную агрегацию:

 SELECT TIME, SECTION, COUNT(*) as TOTAL,
       COUNT(STATUS) AS IN, ( COUNT(*) - COUNT(STATUS) ) as ABSENT
FROM attendance_record
GROUP BY TIME, SECTION
ORDER BY TIME