MySQL统计求和,当SUM遇到CASE WHEN

背景

在MySQL中我们经常会遇到统计求和的情况,但是有些时候我们又不需要分组,只需要分别统计比如type=0type=1 的数量分别是多少,那么我们该如何去做呢?下面整理了一些当SUM 遇到CASE WHEN的情况下的一些统计写法,仅供参考。

解决

sql 复制代码
SELECT
	-- 统计total_work_hour总和
    IFNULL(SUM(total_work_hour), 0) AS totalWorkHour,
    -- 统计当robot_type=0的时候的total_work_dist的总和
    IFNULL(SUM(CASE WHEN robot_type = 0 THEN total_work_dist ELSE 0 END), 0) AS totalWorkDist,
    -- 统计当robot_type=1的时候的total_work_dist的总和
    IFNULL(SUM(CASE WHEN robot_type = 1 THEN total_work_dist ELSE 0 END), 0) AS totalWorkDistClean,
    -- 统计当online_status=0的时候的记录数量的总和
    IFNULL(SUM(CASE WHEN online_status = 0 THEN 1 ELSE 0 END), 0) AS totalOffline,
    -- 统计当online_status=1的时候的记录数量的总和
    IFNULL(SUM(CASE WHEN online_status = 1 THEN 1 ELSE 0 END), 0) AS totalOnline,
    -- 统计bind_time和当前时间相差了几个小时
    IFNULL(SUM(TIMESTAMPDIFF(HOUR, bind_time, NOW())), 0) AS totalBindHour,
    -- 统计总记录数量
    IFNULL(SUM(1), 0) AS totalCount
FROM
    device_info;
相关推荐
梁萌14 小时前
MySQL数据库分库分表介绍
数据库·mysql·shardingsphere·分库分表
Cat God 00716 小时前
SQL使用及注意事项
数据库·sql·mysql
华仔啊16 小时前
如何避免MySQL死锁?资深DBA的9条黄金法则
后端·mysql
@老蝴17 小时前
MySQL数据库 - 约束和联合查询
android·数据库·mysql
程序猿202317 小时前
MySQL索引使用--最左前缀法则
数据库·mysql
她说..20 小时前
MySQL数据处理(增删改)
java·开发语言·数据库·mysql·java-ee
Alex Gram20 小时前
MySQL实时同步到SQL Server:技术方案与实现路径
数据库·mysql
计算机学姐1 天前
基于SSM的网上花店销售系统【2026最新】
java·vue.js·mysql·java-ee·tomcat·intellij-idea·mybatis
嫂子的姐夫1 天前
py连接mysql
数据库·爬虫·mysql
晨曦5432101 天前
数据库视图:数据安全与查询利器
数据库·sql·mysql