如何用SQL计算分组数据非空比例以评估数据稀疏度?
- 内容介绍
- 文章标签
- 相关推荐
本文共计823个文字,预计阅读时间需要4分钟。
在SQL中,没有内置名为`DENSITY`或`SPARSITY`的函数。所谓的稀疏度通常不是指数学密度,而是指数据在各个分组中的非空值占比。在业务上,通常表示为:
关键点在于:必须按分组计算,且要区分 NULL 和空字符串——很多误用把 COUNT(col) 当成“非空计数”,却忘了 COUNT() 本身就会跳过 NULL,但不会跳过 '';而 COUNT(*) 统计所有行,不管字段是否为空。
用 COUNT + CASE 算每组非空比例(最通用写法)
核心逻辑是:分母用 COUNT(*)(该组总行数),分子用显式条件判断哪些算“有效值”。不能依赖 COUNT(col) 直接替代,尤其当列允许空字符串或零值时。
本文共计823个文字,预计阅读时间需要4分钟。
在SQL中,没有内置名为`DENSITY`或`SPARSITY`的函数。所谓的稀疏度通常不是指数学密度,而是指数据在各个分组中的非空值占比。在业务上,通常表示为:
关键点在于:必须按分组计算,且要区分 NULL 和空字符串——很多误用把 COUNT(col) 当成“非空计数”,却忘了 COUNT() 本身就会跳过 NULL,但不会跳过 '';而 COUNT(*) 统计所有行,不管字段是否为空。
用 COUNT + CASE 算每组非空比例(最通用写法)
核心逻辑是:分母用 COUNT(*)(该组总行数),分子用显式条件判断哪些算“有效值”。不能依赖 COUNT(col) 直接替代,尤其当列允许空字符串或零值时。

