SQL刷题笔记day2

1 题目

我的通过代码:

select salary from salaries
group by salary
order by salary desc

复盘:考点是只显示一次——group by,逆序(从大到小)——order by...desc

2题目 

我的错误代码:

select employees.emp_no from employees
where employees.emp_no not in dept_manager.emp_no

正确答案

SELECT emp_no FROM employees
WHERE emp_no NOT IN (SELECT emp_no FROM dept_manager)

复盘:我的思路是对的,非领导员工,就用not in,但是格式错误,not in后面应该接不含null的数据集,而不是属性名,这里要用select返回。 

not in用法学习链接:https://blog.csdn.net/yeahPeng11/article/details/111144892

3题目

我的代码:

select dept_emp.emp_no,dept_manager.emp_no manager
from dept_emp right join dept_manager
on dept_emp.dept_no = dept_manager.dept_no

正确代码:

select dept_emp.emp_no,dept_manager.emp_no manager
from dept_emp join dept_manager
on dept_emp.dept_no = dept_manager.dept_no
where dept_emp.emp_no != dept_manager.emp_no

复盘:题目马虎了,题目说如果员工本身是经理的话则不显示,即要加一个where dept_emp.emp_no != dept_manager.emp_no,否则有可能自己是经理的情况。此外join的方式在这里没有影响,因为只看的是都非null的emp_no 

4题目

我的错误代码:

select d.dept_no, d.emp_no,s.salary
from dept_emp d join salaries s
on d.10001=s.emp_no
group by d.dept_no
order by d.dept_no asc

 正确代码:

select dept_no,s.emp_no,salary maxSalary
from dept_emp de join salaries s 
on de.emp_no=s.emp_no 
/*用联合条件*/
where (dept_no,salary) 
in (select dept_no,max(salary)                               
from dept_emp de join salaries s 
on de.emp_no=s.emp_no 
/*gruop by 之后直接查询emp_no默认取非聚合的第一条,不符合我们的目的*/
group by dept_no)
order by dept_no

复盘:问题关键是求得每个部门的最大薪水,并和员工对应,这样才能找到对应部门对应薪水的员工号,可以使用联合条件,同时找出部门号和最大薪水,然后通过表连接找到该部门(该最大薪水)对应的员工号即可。

5问题

我的错误代码: 

select emp_no
from employees
where (int(emp_no)%2) not in 0 and last_name not in 'Mary'
order by hire_date desc

 正确代码:

select *
from employees
where (emp_no)%2!=0 and last_name not in ('Mary')
order by hire_date desc

复盘:字符串不仅要引号还要括号()

6题目

我的正确代码

select t.title,avg(s.salary)
from titles t join salaries s
on t.emp_no=s.emp_no
group by t.title
order by avg(s.salary) asc

复盘:统计出各个title类型对应,就要以title进行分组。

(感冒了头有点痛,明天再来吧,追剧去了 追剧可缓解头痛)

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一下 SQL Server 的相关内容。SQL Server 是一种关系型数据库管理系统,用于存储和管理大量结构化数据。在过程中,您可以通过解决一系列与 SQL Server 相关的问来提高对其的理解和应用能力。 以下是一些常见的 SQL Server 方向和相关问: 1. SQL 基础知识: - 什么是 SQL Server?它有哪些特点和优势? - SQL Server 中的数据类型有哪些?它们分别用于存储什么类型的数据? - 如何创建数据库和表格? - 如何插入、更新和删除数据? - 如何使用 SELECT 语句查询数据? 2. 数据查询与筛 - 如何使用 WHERE 子句进行条件选? - 如何使用 ORDER BY 子句对查询结果进行排序? - 如何使用 GROUP BY 子句进行分组聚合操作? - 如何使用 HAVING 子句进行条件筛选(针对分组后的结果)? . 数据操作与修改: - 如何使用 UPDATE 语句修改表格中的数据? - 如何使用 DELETE 语句删除表格中的数据? - 如何使用 INSERT INTO 语句插入新的数据? 4. 数据连接与联结: - 如何使用 JOIN 连接多个表格? - 什么是内连接、外连接和交叉连接? - 如何使用子查询进行复杂的数据查询? 5. 数据聚合与统计: - 如何使用聚合函数(如 SUM、AVG、COUNT、MAX、MIN)进行数据统计? - 如何使用 GROUP BY 子句进行分组统计? - 如何使用 HAVING 子句进行条件筛选(针对分组后的统计结果)? 这些问只是 SQL Server 中的一部分,您可以根据自己的需求和水平选择适合的目进行练习。同时,还可以参考 SQL Server 官方文档、教程和在线资源来深入学习和提高技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值