首页 > 试题广场 >

找出所有员工当前薪水salary情况

[编程题]找出所有员工当前薪水salary情况
  • 热度指数:369345 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个薪水表,salaries简况如下:
emp_no 
salary
from_date 
to_date
10001
72527 2002-06-22
9999-01-01
10002
72527 2001-08-02
9999-01-01
10003
43311 2001-12-01 9999-01-01

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

示例1

输入

drop table if exists  `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`));
INSERT INTO salaries VALUES(10001,72527,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');

输出

72527
43311
select distinct salary from salaries order by salary desc;
额,楼上都是大神吧。。为啥不能用DISTINCT
发表于 2022-07-22 19:20:21 回复(0)
大表一般用distinct效率不高,大数据量的时候都禁止用distinct,建议用group by解决重复问题。
1.distinct + order by
select distinct salary from salaries
order by salary desc
2.group by + order by
select salary from salaries
group by salary
order by salary desc
发表于 2022-07-19 16:36:45 回复(0)
select salary from salaries group  by salary order by salary desc

发表于 2022-04-21 15:26:14 回复(0)
select distinct(salary)
from salaries 
order by salary desc
根据题目意思,对salary去重,再降序即可
发表于 2022-03-02 17:33:11 回复(0)
#写法一#
select distinct salary
from salaries
order by salary desc;

#写法二#
select salary
from salaries
group by salary
order by salary desc;

发表于 2022-02-16 21:23:40 回复(0)
select distinct(salary) from salaries order by salary desc;
发表于 2022-02-05 22:31:40 回复(0)
搞不懂为什么是题目哪里写了当前时间,为何要用到9999-01-01
发表于 2022-01-17 21:58:19 回复(0)
select distinct salary from salaries
发表于 2022-01-14 10:03:23 回复(1)
select salary from salaries group by salary order by salary desc;
select distinct salary from salaries order by salary desc;
发表于 2021-11-19 16:24:17 回复(0)
select distinct salary from salaries order by salary desc;   这个为啥也行呢 ? 没说要排序哇
发表于 2021-10-26 22:36:15 回复(0)

该题要注意去重复值,还要将结果逆序输出,即排序时用降序排列

方法一:distinct

select distinct salary
from salaries
order by salary desc;

方法二:group by分组

select salary
from salaries
group by salary
order by salary desc;
发表于 2021-10-26 17:23:55 回复(0)
说实话,第一时间想到了group by ,但还是用的 select distinct salary from salaries order by salary desc ,成功了。
但写group by,总是出错,复制别人也不行,select salary from salaries where to_date='9999-01-01' group by salary order by salary desc;有人告诉我为什么吗?
发表于 2021-10-09 17:00:11 回复(1)
SELECT
  DISTINCT salary
FROM
  salaries
WHERE 
  to_date="9999-01-01"
GROUP BY
  emp_no
ORDER BY
  salary DESC
题目要求找出所有员工的当前薪水,salaries薪水表不排除存在同一个员工的薪水记录,所以我感觉还是要以员工id先分组,之后再找出最新的一条薪水记录。distinct非必须
发表于 2021-09-28 09:32:30 回复(0)
1:
select distinct `salary`
from salaries
order by `salary` desc;

2:
 select  `salary`
from salaries
group by `salary`
order by `salary` desc;


使用distinct去重,或者group by分组都可以实现,不过group by 运行时间要短一些
发表于 2021-09-26 09:52:14 回复(0)
distinct 所占空间为什么比使用group by所占空间小。


发表于 2021-09-06 15:13:27 回复(0)
with tjsj as(
select * from salaries group by salary 
)select salary from tjsj order by salary desc
发表于 2021-07-24 16:00:34 回复(0)
 select salaries.salary from salaries  group by salaries.salary  order by salaries.salary desc


发表于 2021-07-18 18:32:25 回复(0)
select distinct salary from salaries
order by salary desc;

1.使用order by语句实现逆序排布
2.使用distinct语句返回唯一不同的值
发表于 2021-07-15 13:06:21 回复(0)