2024-11 小猿搜题 入门

我发誓:每一道题目都不超过如下知识点。

如果超过了,就让凤姐和乔碧萝蹂躏我一百次。

SQL跟初中数学一样,记忆概念、用法是没卵用的。

能灵活应用才是王道。

====================================================================================================

任务:找出从不缺考的学生id,并按照学生id升序排序;注意,学生成绩为NULL,则表示改学生缺考了。

前面学了那么多GROUP BY,再给你一个新的知识点NULL,你能融会贯通吧?

不然当什么大学生呢,难怪高数不及格。

====================================================================================================

NULL 的基本概念

  • 定义NULL 表示一个字段的值是未知或不存在的。它不是零、空字符串或其他任何默认值。
  • 三值逻辑:SQL 使用三值逻辑来处理 NULL:真(TRUE)、假(FALSE)和未知(UNKNOWN)。例如,NULL = NULL 返回 UNKNOWN 而不是 TRUE 或 FALSE

处理 NULL 的方法

  • IS NULL 和 IS NOT NULL

    • IS NULL 用于检查某个字段是否为 NULL
    • IS NOT NULL 用于检查某个字段是否不为 NULL
  • COALESCE

    • 返回第一个非 NULL 的表达式。如果所有参数都是 NULL,则返回 NULL
  • IFNULL

    • MySQL 特定函数,用于替换 NULL 值。如果有 NULL,则返回第二个参数;否则返回第一个参数。
  • NULLIF

    • 如果两个表达式相等,则返回 NULL,否则返回第一个表达式。

聚合函数与 NULL

  • COUNT

    • COUNT(*) 计算所有行数,包括 NULL
    • COUNT(column_name) 仅计算非 NULL 的行数。
  • SUM, AVG, MIN, MAX

    • 这些聚合函数通常会忽略 NULL 值。

经典-学生表课程表 group by case when count having null

students,学生表

student_id name class_code grade_code birth_date residence gender
100611 姜建华 C219 S3 2009-01-15 城镇 m
102890 韩辉 C223 S3 2009-10-26 农村 m
105684 李丽丽 C219 S3 2009-03-28 城镇 m
110591 李华 C223 S1 2008-05-31 农村 m
110611 王桂珍 C218 S3 2008-06-04 城镇 m

scores,成绩表

分数可能为Null

student_id subject score exam_date
358575 生物 29 2024-06-30
735011 语文 37 2024-03-30
597305 历史 67 2024-03-30
921856 数学 76 2024-04-27
455713 化学 77 2024-06-30

teachers,教师表

如第一行,赵娇娇教学C218、C219、C217三个班级的语文,是C217班的班主任

teacher_id name subject class_code head_teacher degree graduate_date(毕业日期) enter_date(入校日期) gender qualification(职称) fir_degr(第一学历) mst_degr(研究生学历)
t001 赵娇娇 语文 C218C219C217 C217 master 2010-06-30 2010-07-30 f Senior 北京大学 北京大学
t002 任伊乐 语文 C220C221C222C223C224 C220 master 2010-06-30 2010-07-30 f Senior 北京大学 清华大学
t003 李敏 数学 C218C219C217 C218 master 1994-06-30 1994-07-30 f Senior 北京大学 复旦大学
t004 吕敏 数学 C220C221C222 C221 phd 1995-06-30 1995-07-30 f Senior 北京大学 清华大学
t005 陈佳蔬 数学 C223C224 C223 master 2010-06-30 2010-07-30 f null 北京大学 北京大学

university,大学信息表 

name is_985 times_rnk(泰晤士2024全球排名)
King's College London 0 34
National University of Singapore,NUS 0 24
Singapore Polytechnic 0 null
上海交通大学 1 113
北京大学 1 16

 成为会员,解锁300道大厂数分SQL真题

ID170 海王:1小时发3个红包  
中等 group by case when distinct count having 支付宝
ID200 HAVING-执教教师超过3人的科目
入门 group by count having 经典-学生表课程表 小猿搜题
ID224 小丑竟是我自己  
中等 group by case when sum - / having != 聚合函数 百分比计算 支付宝
ID226 只买iPhone的用户  
中等 group by case when sum having 聚合函数 高级条件过滤 客户订单分析 Apple
ID258 用户听歌完成情况  
简单 group by inner join case when count sum / having >= 聚合函数 多表连接 音乐偏好分析 QQ音乐

MySQL 8.0

00:00