一、表中數據
需要計算出:
數據表中設備總數
、激活/未激活數
、開啓/關閉數
、在線/離線數
、有效/無效數
。
二、如何處理
大部分時候,可能採取分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 ;