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;
相关推荐
Ren_xixi2 分钟前
redis和mysql的区别
数据库·redis·mysql
追逐时光者2 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
drebander2 小时前
MySQL 查询优化案例分享
数据库·mysql
小林coding4 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
18号房客5 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构
翔云1234566 小时前
MySQL purged gtid是如何生成和维护的
数据库·mysql
平行线也会相交8 小时前
云图库平台(三)——后端用户模块开发
数据库·spring boot·mysql·云图库平台
恒辉信达9 小时前
hhdb客户端介绍(53)
数据库·mysql·hhdb·数据库可视化界面客户端
Hello.Reader10 小时前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
是程序喵呀10 小时前
MySQL备份
android·mysql·adb