一、表中数据
需要计算出:
数据表中设备总数
、激活/未激活数
、开启/关闭数
、在线/离线数
、有效/无效数
。
二、如何处理
大部分时候,可能采取分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 ;