当前位置: 首页 > news >正文

面试官常问:NULL 对聚合函数的影响

在 SQL 面试中,聚合函数是必考点,而很多人忽略了 NULL 值的特殊处理逻辑。几乎所有面试官都会问:

在使用 COUNT、SUM、AVG、MAX、MIN 等聚合函数时,NULL 会不会参与计算?

如果答不出来,就会被认为对数据库的细节不够熟悉。今天我们就来系统梳理一下。

一、COUNT 和 NULL

COUNT(*) 与 COUNT(列名) 的区别正是面试高频陷阱。

-- 建表 & 插入测试数据

CREATE TABLE scores (

id INT,

grade INT

);

INSERT INTO scores VALUES

(1, 90),

(2, NULL),

(3, 80),

(4, NULL);

示例 1:COUNT(*)

SELECT COUNT(*) FROM scores;

输出结果:4

解释:COUNT(*) 会统计所有行,不管列是否为 NULL。

示例 2:COUNT(列名)

SELECT COUNT(grade) FROM scores;

输出结果:2

解释:COUNT(列名) 只统计非 NULL 的值,NULL 不会计入。

二、SUM 和 NULL

SUM 会忽略 NULL 值,只对非 NULL 记录求和。

SELECT SUM(grade) FROM scores;

结果:170

解释:只计算了 90 + 80,两个 NULL 被忽略。

如果全是 NULL,则结果为 NULL,而不是 0。

三、AVG 和 NULL

AVG 的计算过程等价于 SUM / COUNT(列名),所以 NULL 同样会被忽略。

SELECT AVG(grade) FROM scores;

结果:85

解释:(90 + 80) / 2 = 85,分母是非 NULL 的数量。

注意:如果你错误地以为分母是总行数,就会算成 170 / 4 = 42.5,这是常见面试陷阱。

 四、MAX / MIN 和 NULL

MAX 和 MIN 也会忽略 NULL,只在非 NULL 值中找最大最小。

SELECT MAX(grade), MIN(grade) FROM scores;

结果:90, 80

解释:NULL 不参与比较,直接被跳过。

五、面试高频问法

面试官常会抛出以下问题:

1. COUNT(*) 和 COUNT(列名) 的区别?

COUNT(*) 包含 NULL 行,COUNT(列名) 忽略 NULL。

2. SUM、AVG 遇到 NULL 怎么算?

忽略 NULL,仅计算非 NULL 值。

3. 如果全是 NULL,SUM 和 AVG 返回多少?

SUM 返回 NULL,AVG 返回 NULL。

六、总结

COUNT(*):统计所有行,包括 NULL。

COUNT(列):只统计非 NULL 值。

SUM / AVG / MAX / MIN:忽略 NULL,只作用于有效值。

全是 NULL 的情况:大部分聚合函数返回 NULL,而不是 0。

面试官考察的重点不只是记忆,而是你能否通过逻辑来解释结果。

http://www.dtcms.com/a/415655.html

相关文章:

  • 汕头模板做网站贵州省建设局八大员报名网站
  • Excel判断身份证号是否正确
  • 神经正切核(NTK):从梯度流到核方法的完整推导
  • 想在浏览器里跑 AI?TensorFlow.js 硬件支持完全指南
  • 安徽省城乡住房建设厅网站沧县官厅网站建设
  • 网站开发北京虚拟主机做网站教程
  • WSL 安装方法(简单全面)
  • 京东100道GO面试题及参考答案(上)
  • 网站被挂黑链怎么处理深圳宝安网站建设公司推荐
  • h5网站模板下载wordpress加速访问
  • 语言大模型(LLM)与自然语言处理(NLP)
  • 如何构建网站重庆中技互联
  • QML学习笔记(十五)QML的信号处理器(MouseArea)
  • php 微信 网站建设无限观影次数的app软件
  • 苏州网站建设数据网络WordPress支付宝登录
  • opcode - Claude Code 图形化工具集
  • 淮南招聘网站建设全球域名注册平台
  • VsCode配置Claude Code-Windows
  • 网站建设台词精品课程网站设计说明范文
  • 手写MyBatis第78弹:装饰器模式在MyBatis二级缓存中的应用:从LRU到防击穿的全方案实现
  • 山西网站开发二次开发拍卖网站功能需求文档
  • 中文简洁网站设计图wordpress 导航菜单设置
  • JavaWeb-Ajax、监听器、过滤器及对应案例和jstl补充
  • 如何自己免费建网站做最优秀的自己演讲视频网站
  • 文件包含与下载漏洞
  • centos7.9下安装freeswitch-1.10.5.-release详细教程(极其简单)
  • 慢慢来做网站多少钱互联网保险经纪公司十大排名
  • 【开题答辩全过程】以 Springboot大学英语四、六级学习系统开题为例,包含答辩的问题和答案
  • php网站开发有什么软件男人女人做性关系网站
  • 网站访客qq获取原理南昌网站开发机构