mysql統計某個字段不同值的個數

對資訊表的state_dict進行統計,0代表待審覈,1代表審覈通過,2代表審覈不通過

1、Mapper文件以List<Object>接收

SELECT
            a.state_dict,
            COUNT(a.state_dict) AS "count"
        FROM
            news a
        GROUP BY
            state_dict

2、Mapper文件以Map<String,Object>接收,便於頁面取值

 

SELECT
    IFNULL(SUM(c.count), 0) AS 'total',
    max(CASE WHEN c.state_dict = 0 THEN c.count ELSE 0 END)"auditCount",
    max(CASE WHEN c.state_dict = 1 THEN c.count ELSE 0 END)"throughAuditCount",
    max(CASE WHEN c.state_dict = 2 THEN c.count ELSE 0 END)"auditFailedToPassCount"
FROM
    (
        SELECT
            a.state_dict,
            COUNT(a.state_dict) AS "count"
        FROM
            news a
        GROUP BY
            state_dict
    ) c

3、需要注意接收的類型,SUM返回的是BigDecimal,max返回的是Long類型,這裏使用Object類型,如果使用其他類型,在運行時報類型轉換錯誤

轉換爲整形:

Integer.parseInt(countMap.get("total").toString())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章