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

SQL刷题笔记day1

1题目

我的代码:

select * from employees
order by hire_date desc
limit 2,1

标准代码:

select * from employees
where hire_date=
(select distinct hire_date 
from employees 
order by hire_date desc 
limit 2,1)

复盘:因为按照入职日期排列,都不一定只有一个,所以要用distinct按照hire_date进行去重分组,这样才能保证取到的是倒数第三个日期,而不仅仅是倒数第三个记录。

2 题目

我的代码:

select *,dept_no
from salaries join dept_manager
on salaries.emp_no=dept_manager.emp_no
order by salaries.emp_no asc

正确答案:

select s.*,d.dept_no
from salaries s join dept_manager d
on s.emp_no=d.emp_no
order by s.emp_no asc

复盘:涉及到表链接问题,select时要表明是哪个表的,不然会报错。s.和d.,也可以不用重命名,反正要让SQL知道是读出哪个表里面的。

3 题目

我的通过代码:

select e.last_name,e.first_name,d.dept_no
from employees e right join dept_emp d
on e.emp_no =d.emp_no

复盘:这里inner join 和right join(employees当主表在前时)都可以

复习一下 表链接:把表连接在一起(3种方式)

(1)内连接:只两个表保留相同的

那么在dept_emp表中没有的emp_no就不会保存,即employees表中能够保存下来的都是在dept_emp表出现过的表,实现了部门存在才可以分配。

(2)左连接:合并后左边的表所有行都保留,若左边的表有空值则删除(即删除右边没有匹配上的)

(3)右连接:与左相反,合并后右边的表所有行都保留,若右边的表中有空值则删除,但是左边表行中有空值不删(即删除左边没有匹配上的)

相当于也是dept_emp表中出现的有部门的员工才都保存,没有部门的,合并后dept_no 肯定是空值,也会被删除。所以employees当主表的右连接和两个表直接内连接效果相同。

4 题目

我的通过代码:

select e.last_name,e.first_name,d.dept_no
from employees e left join dept_emp d
on e.emp_no=d.emp_no

复盘:考点是左连接,合并后,employees本来存在的行都要保留,即使行中出现空值也要保留。

5 题目

我的通过代码:

select emp_no,count(emp_no) from salaries
group by emp_no
having count(emp_no)>15

复盘:复习了一下之前的笔记才知道,(1)count要先进行聚合,group by字段名:规定依据哪个字段分组聚合,使用该子句是为了依据相同字段值分组后进行聚合运算,常和聚合函数联用。(2)但是在group by之后,就不能用where了,要用having!

————————————————今天就这样吧,明天继续maybe——————

相关文章:

  • 证券公司数据中心异地实时同步,如何能不依赖人工即可进行?
  • 【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容
  • 【笔记】软件架构师要点记录(1)
  • LeetCode-102. 二叉树的层序遍历【树 广度优先搜索 二叉树】
  • java.util.Arrays 详解
  • 【八股系列】webpack的构建流程是什么?
  • 如何用电脑批量操作多部手机
  • 二.常见算法--贪心算法
  • 基金基础知识-基金的生命周期
  • 蒙特卡洛+概率潮流!基于蒙特卡洛和新能源出力模拟的概率潮流分布程序代码!
  • AI赋能 企业智能化应用实践
  • Django数据库查询操作
  • C# 观察者模式实现
  • 【Linux】深入理解 Linux 的 chmod 指令
  • 音视频-常用的分析工具介绍-连续补充
  • hadoop集群管理系统搭建规划说明
  • HTTP中的ETag在移动客户端的应用
  • Mysql5.6主从复制
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我的面试准备过程--容器(更新中)
  • UI设计初学者应该如何入门?
  • 移动端高清、多屏适配方案
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Panda3d 碰撞检测系统介绍
  • # 飞书APP集成平台-数字化落地
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #QT(串口助手-界面)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (27)4.8 习题课
  • (6)设计一个TimeMap
  • (solr系列:一)使用tomcat部署solr服务
  • (分布式缓存)Redis持久化
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .gitignore文件_Git:.gitignore
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Project Open Day(2011.11.13)
  • .net 受管制代码
  • .net6+aspose.words导出word并转pdf
  • .NET下的多线程编程—1-线程机制概述
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [Android 数据通信] android cmwap接入点
  • [Android] Upload package to device fails #2720
  • [C#][DevPress]事件委托的使用
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C++]priority_queue的介绍及模拟实现
  • [dart学习]第四篇:函数
  • [Dxperience.8.*]报表预览控件PrintControl设置
  • [IE编程] 如何编程清除IE缓存
  • [IOI2018] werewolf 狼人
  • [iOS]把16进制(#871f78)颜色转换UIColor