牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

Posted 数据修行路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况相关的知识,希望对你有一定的参考价值。

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

往期牛客网SQL:
第1题:
https://blog.csdn.net/qq_42075754/article/details/116203575
第2题:
https://blog.csdn.net/qq_42075754/article/details/116498770
第4题:
https://blog.csdn.net/qq_42075754/article/details/116646684
第7题:
https://blog.csdn.net/qq_42075754/article/details/116975762

**

第8题题目:

**
薪水表,salaries简况如下:

创建表源码:

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

题目要求

请你找出所有员工具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示,以上例子输出如下:

题目解析与理解

先献上我的解题源码:
方法1:

SELECT distinct
	salary
FROM
	salaries
ORDER BY
	salary DESC

方法二:

SELECT
	salary
FROM
	salaries
GROUP BY
	salary
ORDER BY
	salary DESC

在这两个方法都没有用到where过滤, 这个都是可以的
在牛客网解题思路中很多人中都有where过滤
接在from后,如下

SELECT
	salary
FROM
	salaries
WHERE
	to_date = '9999-01-01'
GROUP BY
	salary
ORDER BY
	salary DESC

理解:

方法1中distinct是过滤掉重复的字段, 在题目上(72527)两个相同的薪水,
用distinct过滤后就只有一个了, 这样就符合题目要求了
方法2中GROUP BY是主要是用于分组, 但是有一定的过滤重复的作用.
利用分组后就只有两个字段了. 这样也就符合题目要求了

以上是关于牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况的主要内容,如果未能解决你的问题,请参考以下文章

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

牛客网SQL-第九题-获取所有非manager的员工emp_no

牛客网SQL-第九题-获取所有非manager的员工emp_no

牛客网SQL-第九题-获取所有非manager的员工emp_no

牛客网SQL-第7题-请你查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t