COUNT(DISTINCT column_name) 可统计每个分组中某字段的不同值个数,自动将NULL视为一个值;语法错误写法DISTINCT COUNT()不合法;大数据量时可建联合索引或使用近似函数优化。GROUP BY 后统计每个分组里某字段有多少个不同值直接用 COUNT(DISTINCT column_name) 就行,这是最常用也最直观的解法。它会在每个分组内部去重后再计数,不是全表去重。常见错误是写成 DISTINCT COUNT(column_name) ------ 这语法不合法,SQL 会报错 ERROR: syntax error at or near "COUNT"。使用场景比如:查每个部门有多少种不同的职级,或每个订单号对应多少个不重复的商品类目。COUNT(DISTINCT) 在 PostgreSQL、MySQL 5.7+、SQL Server 2017+、Oracle、SQLite3 中都支持MySQL 5.6 或更早版本不支持该语法,得用子查询模拟如果 column_name 允许 NULL,DISTINCT 会把所有 NULL 当作一个值处理(即多个 NULL 只算 1 次)遇到 NULL 值时 COUNT(DISTINCT) 怎么算COUNT(DISTINCT column_name) 默认忽略 NULL ------ 准确说是把所有 NULL 视为同一值,并计入去重结果中,但只要该分组里有至少一个 NULL,它就只贡献 1 次计数。如果你希望 NULL 完全不参与计数(即当某分组全是 NULL 时,结果为 0),得加条件过滤:SELECT dept_id, COUNT(DISTINCT CASE WHEN job_level IS NOT NULL THEN job_level END) AS distinct_levelsFROM employeesGROUP BY dept_id;注意这里不能写 COUNT(DISTINCT IF(job_level IS NOT NULL, job_level, NULL)),因为 MySQL 的 IF 返回 NULL 仍会被当作一个去重项;用 CASE 显式排除更可靠。 Felvin AI无代码市场,只需一个提示快速构建应用程序
相关推荐
wuyk55515 分钟前
21.计数排序:不用比较的“空间换时间”排序算法智码看视界16 分钟前
第4篇:循环神经网络及其变体 LSTM/GRU 实战Web3&Basketball17 分钟前
Agent外传审计实战:3类失准事故拦截脚本wuyk55518 分钟前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比何以解忧,唯有..27 分钟前
Milvus 向量数据库的 DDL、DML、DQL 操作详解罗狮粉 9929 分钟前
AI-Gateway — 面向 AI Agent 的本地 Runtime Gateway蓝胖的四次元口袋32 分钟前
Python数据结构知识梳理程序员清风33 分钟前
生产级智能体平台设计:任务编排、工具管理与运行监控文人sec40 分钟前
grant 之后要跟着 flush privileges 吗?要不要使用分区表?高级程序源1 小时前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计