Mysql——查询同一张表中各个状态类型的数据统计

一、表中数据

在这里插入图片描述

需要计算出:
数据表中设备总数激活/未激活数开启/关闭数在线/离线数有效/无效数

二、如何处理

大部分时候,可能采取分sql的形式进行操作,然后将数据整合。

但如果想把所有查询计算逻辑存于一个sql中操作并输出,如何进行操作?

此处需要借用 mysql 自带的 case when then函数。

SELECT 
	COUNT(*) as totalCount,
	SUM(CASE is_active WHEN 1 THEN 1 ELSE 0 END ) as activeCount ,
	SUM(CASE is_active WHEN 0 THEN 1 ELSE 0 END ) as noActiveCount,
	SUM(CASE is_online WHEN 1 THEN 1 ELSE 0 END ) as onlineCount,
	SUM(CASE is_online WHEN 0 THEN 1 ELSE 0 END ) as noOnlineCount,
	SUM(CASE open_status WHEN 1 THEN 1 ELSE 0 END ) as closeSwitchCount,
	SUM(CASE open_status WHEN 0 THEN 1 ELSE 0 END ) as openSwitchCount
FROM switch_list ;

在这里插入图片描述

其实,case还有另外的写法,增加条件判断

SELECT 
	COUNT(*) as totalCount,
	SUM(CASE WHEN is_active=1 THEN 1 ELSE 0 END ) as activeCount 
FROM switch_list ;

在这里插入图片描述

三、参考资料

mysql 查询一张表中某个字段不同状态的数量,用于表格统计

猜你喜欢

转载自blog.csdn.net/qq_38322527/article/details/106804312
今日推荐