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;
相关推荐
坊钰2 小时前
【MySQL 数据库】数据类型
java·开发语言·前端·数据库·学习·mysql·html
꧁坚持很酷꧂3 小时前
Ubuntu远程连接Mysql数据库(图文详解)
数据库·mysql·ubuntu
小小鸭程序员4 小时前
在Spring Boot中实现图片上传和修改
java·数据库·python·mysql·spring
二年级程序员5 小时前
MySQL 函数(入门版)
数据库·mysql
长安城没有风5 小时前
从入门到精通【MySQL】 联合查询
数据库·mysql
给钱,谢谢!6 小时前
mac 安装MySQL
数据库·mysql·macos
GalaxyPokemon6 小时前
MySQL基础 [五] - 表的增删查改
数据库·mysql
一切皆有迹可循8 小时前
IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
spring boot·mysql·intellij-idea
GalaxyPokemon10 小时前
MySQL基础 [二] - 数据库基础
linux·网络·数据库·mysql
techdashen11 小时前
性能比拼: MySQL vs PostgreSQL
数据库·mysql·postgresql