只需添加一个
COUNT(*)
用于捕获所有状态的全部计数的聚合项:
SELECT
MONTHNAME(r.date_of_application) month_name,
MONTH(r.date_of_application) month,
COUNT(CASE WHEN status = 'pending' THEN 1 END) pending,
COUNT(CASE WHEN status = 'attended' THEN 1 END) attended,
COUNT(CASE WHEN status = 'absent' THEN 1 END) absent,
COUNT(CASE WHEN status = 'canceled' THEN 1 END) canceled,
COUNT(*) total
FROM request r
INNER JOIN user u
ON u.id = r.user_id
GROUP BY
month_name , month
ORDER BY 2 DESC;
注意:如果你想要
total
只包括四个
status
当前正在清点的值,然后使用条件聚合:
COUNT(CASE WHEN status IN ('pending', 'attended', 'absent', 'cancelled')
THEN 1 END) AS total