mysql 按某属性分组,再统计不同状态 COUNT(IF(FIELD(column_name,str1,str2,str3,...) >= 0, any_value, null)) ... GROUP BY group_column_name

按某属性分组后,统计该数据中状态列,该状态列包含若干值,统计某一个或几个状态,其他状态业务为一个聚合状态,如空闲和占用(非空闲)状态。

 

-- 利用FIELD()自定义排序函数,不在列表中的值结果为0,可使用= >等条件判断,COUNT(expr)统计非整行数据时,忽略NULL值
SELECT
    COUNT( 1 ),
-- 统计状态1的数量
    COUNT(IF(
        FIELD( state, '状态1' ) = 1, 1, NULL
    )) state1Cnt,
-- 统计非状态1的数量。或者统计其他状态。
    COUNT(IF(
        FIELD( state, '状态1' ) = 0, 1, NULL
    )) noState1Cnt 
FROM
    table_name 
-- LEFT JOIN table_name
-- WHERE CONDITION
GROUP BY
-- 待分组列
    group_prop

.

posted @ 2021-03-04 10:55  毁乐乖狂,自有诪张  阅读(819)  评论(0编辑  收藏  举报