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

关于sql面试积累

1.找出所有“每一门课成绩都 > 80”的学生(即该学生所有课程成绩均 > 80,只要有一门 ≤ 80 就不算)。

SELECT student
FROM t1
GROUP BY student
HAVING MIN(score) > 80;

重要的知识点

HAVING关键字

HAVING 最常见的用法是跟在 GROUP BY 之后,对分组后的聚合结果再做过滤,但它也可以在没有 GROUP BY 的情况下单独使用,只要查询里存在聚合函数即可。如果既没有 GROUP BY,也没有聚合函数,直接使用 HAVING 会报错。

SELECT student
FROM t1
GROUP BY student
HAVING MIN(score) > 80;

有GROUP BY时只看那些 组的聚合结果满足条件 的组。

SELECT COUNT(*) AS total_rows
FROM t1
HAVING COUNT(*) > 10;

无GROUP BY时整张表被视为“一个大组”,HAVING 对这个聚合结果进行筛选

常见关键字的执行顺序

  1. FROM – 组装数据源(表、视图、子查询、JOIN)
  2. ON – JOIN 条件过滤
  3. JOIN – 生成中间结果集
  4. WHERE – 对行级数据进行过滤
  5. GROUP BY – 分组
  6. HAVING – 对分组后的聚合结果再过滤
  7. SELECT – 计算列表达式、去重(DISTINCT)
  8. ORDER BY – 排序
  9. LIMIT / OFFSET-- 截取行(MySQL/PG 语法,SQL Server 用 TOP/FETCH)

“从哪来 → 先过滤行 → 再分组 → 再过滤组 → 再计算列 → 再排序 → 再分页”
对应:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

SELECT dept, AVG(salary) AS avg_s
FROM   emp
WHERE  hire_date >= '2020-01-01'
GROUP  BY dept
HAVING AVG(salary) > 8000
ORDER  BY avg_s DESC
LIMIT  5;
http://www.lryc.cn/news/602134.html

相关文章:

  • 红绿灯纵向距离的评估
  • 【查漏补缺】机器学习典型算法
  • 【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(终)
  • 应用加速游戏盾的安全作用
  • Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
  • 【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路
  • GaussDB 开发基本规范
  • 22 BTLO 蓝队靶场 Countdown 解题记录
  • 如何利用机器学习分析筛选生物标记物
  • 微信小程序——早餐小程序
  • TMS320F28335PGFA TI德州仪器:32位浮点内核+CLA协处理器DSP,工业控制性能极限!
  • 【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患
  • CJ02、CJ20N下达项目报错用户状态 初始 是活动的,怎么解决?
  • 模型压缩的一些整理
  • 异步通讯组件MQ
  • 【Linux系统】Ext2文件系统 | 软硬链接
  • 医疗人工智能高质量数据集和语料库建设路径探析
  • HOT100——链表篇Leetcode206. 反转链表
  • qt 心跳包
  • Java面试宝典:Spring Boot
  • 解决MySQL 1055错误:ONLY_FULL_GROUP_BY问题详解(MySQL 8.0版)
  • Java项目接口权限校验的灵活实现
  • Datawhale AI夏令营 task2 笔记问题汇总收集
  • Python 实现服务器自动故障处理工具:从监控到自愈的完整方案
  • PCS液相色谱柱:专为碱性化合物设计的高性能色谱柱
  • Python 异常 (Exception) 深度解析
  • 项目进度如何控制
  • 新手向:破解VMware迁移难题
  • 元宇宙经济与数字经济的异同:虚实交织下的经济范式对比
  • 【实时Linux实战系列】在实时应用中进行负载均衡