You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL按日期分组:区分NULL与非NULL数据统计

按日期字段是否为空分组统计数量

原始数据表

iddate
12023-06-05 08:00:00.000
22023-06-05 13:00:00.000
32023-06-06 08:00:00.000
4null
52023-06-05 08:00:00.000
6null

需求说明

需按date字段是否为null进行分组统计,得出非空数据和空数据的数量,目标结果如下:

目标统计结果

count(date)date
4NOT_NULL_DATA
2NULL_DATA

实现方案

通用SQL写法(适配多数数据库)

通过CASE WHEN语句将非空和空的date字段映射为指定字符串,再按该字符串分组统计:

SELECT
    COUNT(*) AS `count(date)`,
    CASE
        WHEN date IS NOT NULL THEN 'NOT_NULL_DATA'
        ELSE 'NULL_DATA'
    END AS date
FROM your_table_name
GROUP BY CASE
    WHEN date IS NOT NULL THEN 'NOT_NULL_DATA'
    ELSE 'NULL_DATA'
END;

MySQL简化写法

利用MySQL内置IF函数简化逻辑:

SELECT
    COUNT(*) AS `count(date)`,
    IF(date IS NOT NULL, 'NOT_NULL_DATA', 'NULL_DATA') AS date
FROM your_table_name
GROUP BY IF(date IS NOT NULL, 'NOT_NULL_DATA', 'NULL_DATA');

注意:若直接使用COUNT(date),空值组的统计结果会显示为0,与目标结果不符,因此使用COUNT(*)统计每组总条数更准确。

内容的提问来源于stack exchange,提问作者rime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:08:17