插件窝 干货文章 Sql根据不同条件统计总数的方法(count和sum)

Sql根据不同条件统计总数的方法(count和sum)

class age Count ELSE 93    来源:    2024-10-28

前言

经常会遇到根据不同的条件统计总数的问题,一般有两种写法:count和sum都可以
数据准备:

方法一 :Count

代码:

SELECT
    COUNT(
        CASE
        WHEN age > 20
        AND age < 25 THEN
            1
        ELSE
            NULL
        END
    ) AS cnt0,
    COUNT(
        CASE
        WHEN age >= 25
        AND age < 30 THEN
            1
        ELSE
            NULL
        END
    ) AS cnt1
FROM
    USER;

结果:

方法二:sum

代码:

SELECT
    SUM(
        CASE
        WHEN age > 20
        AND age < 25 THEN
            1
        ELSE
            0
        END
    ) AS cnt0,
    SUM(
        CASE
        WHEN age >= 25
        AND age < 30 THEN
            1
        ELSE
            0
        END
    ) AS cnt1
FROM
    USER;

结果:

当然也可以和count代码一样ELSE后面也写为NULL

SELECT
    SUM(
        CASE
        WHEN age > 20
        AND age < 25 THEN
            1
        ELSE
            NULL
        END
    ) AS cnt0,
    SUM(
        CASE
        WHEN age >= 25
        AND age < 30 THEN
            1
        ELSE
            NULL
        END
    ) AS cnt1
FROM
    USER;

后记

其实原理很简单,count统计的时候有满足条件的就加1,没有满足的变为NULL,我们知道聚合函数统计的时候是忽略null值的;而sum原理和coun相似,不过ELSE后面可以是0或者NULL。

到此这篇关于Sql根据不同条件统计总数的文章就介绍到这了,更多相关sql统计总数内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!