Mysql 如何对每行中的最小计算值求和?
在这种情况下,我需要你的建议 具有以下SQL查询Mysql 如何对每行中的最小计算值求和?,mysql,Mysql,在这种情况下,我需要你的建议 具有以下SQL查询 SELECT MONTHNAME(r.date_of_application) month_name, MONTH(r.date_of_application) month, SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) pending, SUM(CASE WHEN status = 'attende
SELECT
MONTHNAME(r.date_of_application) month_name,
MONTH(r.date_of_application) month,
SUM(CASE
WHEN status = 'pending' THEN 1
ELSE 0
END) pending,
SUM(CASE
WHEN status = 'attended' THEN 1
ELSE 0
END) attended,
SUM(CASE
WHEN status = 'absent' THEN 1
ELSE 0
END) absent,
SUM(CASE
WHEN status = 'canceled' THEN 1
ELSE 0
END) canceled
FROM
request r
INNER JOIN
user u ON u.id = r.user_id
GROUP BY month_name , month
ORDER BY 2 DESC;
我得到这个结果
+------------+-------+---------+----------+--------+----------+
| month_name | month | pending | attended | absent | canceled |
+------------+-------+---------+----------+--------+----------+
| October | 10 | 4 | 1 | 0 | 1 |
+------------+-------+---------+----------+--------+----------+
现在,我想对列挂起
、出席
、缺席
和取消
的值求和,并将结果添加到一个新列总计
这是预期的结果
+------------+-------+---------+----------+--------+----------+-------+
| month_name | month | pending | attended | absent | canceled | total |
+------------+-------+---------+----------+--------+----------+-------+
| October | 10 | 4 | 1 | 0 | 1 | 6 |
+------------+-------+---------+----------+--------+----------+-------+
此查询可能有许多结果
提前感谢只需添加一个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;
注意:如果希望总计
仅包括当前清点的四个状态
值,则使用条件聚合:
COUNT(CASE WHEN status IN ('pending', 'attended', 'absent', 'cancelled')
THEN 1 END) AS total
您在预期输出中的总数不等于组件的总和。我刚刚更新了问题我猜sum(status='pending')也会这样做thing@Strawberry猜错了总比从不猜好。最好避免使用非ANSI标准的扩展,除非使用它们会带来一些主要的好处,比如性能。