sql 的 count、avg

1、

sql 复制代码
"count:作用:计算,指定字段,在查询结构中出现的个数"

"查询结构都是 107,因为,employees表有107条记录"
SELECT 
	COUNT(employee_id), 
	COUNT(salary), 
	COUNT(2 * salary), 
	COUNT(1), 
	COUNT(2), 
	COUNT(*)
FROM employees

2、如何计算表中有多少条记录,如何实现?

sql 复制代码
问题:如何计算表中有多少条记录,如何实现?	
	方式一:count(*)
	方式二:count(0)、count(1)、count(3) ....
	方式三:count(具体字段x),这个方式不一定对,
		   因为计算的是:字段x为非null时候,如果字段x为null,就不会算上了

这三种方式,谁的效率高?
	如果使用的是MyISAM存储引擎,三者效率相同
	如果使用的是InnoDB存储引擎,则 count(*) = count(1) > count(具体字段x)

3、公式:avg = sum / count

需求:查询公司的平均奖金率

sql 复制代码
错误写法:
SELECT avg(commission_pct) 
FROM employees

正确写法:
SELECT 
	sum(commission_pct) / COUNT(IFNULL(commission_pct, 0)),
	avg(IFNULL(commission_pct, 0))
FROM employees

为什么 SELECT avg(commission_pct) 是错误写法?

核心坑点:

MySQL 的 AVG() 函数会自动跳过 NULL 值!

  • 表中有 100 个员工
  • 其中 40 个有提成(commission_pct = 0.2/0.3...)
  • 60 个没有提成(commission_pct = NULL)

AVG(commission_pct) 计算时:

  1. 只算那 40 个有值的
  2. 分母是 40,不是 100
  3. 结果 = 40人总提成 / 40人
    → 这不是公司全员平均提成,只是"有提成的人的平均"
    → 业务逻辑错误!

正确写法:完美解决 NULL 问题

sql 复制代码
-- 写法1
sum(commission_pct) / COUNT(IFNULL(commission_pct, 0))

-- 写法2
avg(IFNULL(commission_pct, 0))

原理:

IFNULL(commission_pct, 0)

→ 把所有 NULL 变成 0

→ 分母变成 总人数(100人)

→ 结果 = 公司全员平均提成


一句话总结(必背)

  1. AVG(字段) :不算 NULL,只算有值的行(坑!)
  2. AVG( IFNULL(字段, 0) ) :NULL 当 0 算,算全部行(对!)

最终结论

你已经精准抓住了 AVG 函数处理 NULL 的核心陷阱

  • 错误写法:漏算 NULL,结果偏大 ❌
  • 正确写法:NULL 转 0,全员平均 ✅
相关推荐
阳光九叶草LXGZXJ11 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
阳光九叶草LXGZXJ20 小时前
达梦数据库-报错-16-MERGE INTO提示:无效的列名[XX]
linux·运维·数据库·sql·学习
镜舟科技1 天前
从 StarRocks 到 MIP:数据平台的下一步是“理解”
starrocks·sql·ai·prompt·agent·context·mip
Seraphina362 天前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
做运维的阿瑞2 天前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
做运维的阿瑞2 天前
MYSQL从语义到执行计划:UNION、EXISTS、IN 的深度辨析
数据库·sql·mysql
Moshow郑锴2 天前
sql-pipeline - 基于PostgreSQL的SQL健康检查与发布编排平台
java·sql
Elastic 中国社区官方博客3 天前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
Seraphina363 天前
DVWA(SQL Injection-High,XSS Reflected-Medium,XSS Stored-Medium)
数据库·经验分享·sql·网络安全·xss
2501_933670793 天前
2027风控策略岗秋招准备:SQL、Excel、建模的优先级与项目路径
人工智能·sql·excel