mysql统计某个字段不同值的个数

对资讯表的state_dict进行统计,0代表待审核,1代表审核通过,2代表审核不通过

mysql统计某个字段不同值的个数_第1张图片

1、Mapper文件以List接收

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

2、Mapper文件以Map接收,便于页面取值

 

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类型,如果使用其他类型,在运行时报类型转换错误

mysql统计某个字段不同值的个数_第2张图片

转换为整形:

Integer.parseInt(countMap.get("total").toString())

你可能感兴趣的:(mysql)