当前位置:首页 » 编程语言 » sql员工工资排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql员工工资排序

发布时间: 2023-01-31 10:07:01

sql语句求出第三到第五的工资

sql查询员工的基本工资排名第3-5位的姓名和基本工资,select top 4 姓名,工资 from 表a where 姓名 not in (select top 2 姓名 from 表a order by 工资 desc) order by 工资 desc
查工资的方法:
1、select * from 部门
2、where not exists (select * from 员工 where 员工.部门号=部门.部门号 and 工资 <= 5000)

数据库 有部门字段 和工资字段 按照部门分组再按照工资排序 sql怎么写

使用GROUP BY
SELECT 部门,工资 FROM 表
GROUP BY 部门,工资
ORDER BY 工资

㈢ 给你一张员工表,然后再给你一张职位表, 然后要你写出这个职位所对应的平均工资进行降序排列。 sql怎写

不知道你的具体表结构是什么样的,
暂且设定工资列在员工表里,并且两表以员工ID进行关联,
则每个职位的平均工资的实现sql如下:
select avg(A.工资) xx
from 员工表 A,职位表 B
where A.员工ID=B.员工ID
group by B.职位
order by xx

㈣ sql查询:部门工资前三高的员工和部门工资最高的员工

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。

+------+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+------+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Randy | 85000 | 1 |
+------+-------+--------+--------------+

Department 表包含公司所有部门的信息。
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+

编写一个 SQL 查询,找出每个部门工资前三高的员工。
例如,根据上述给定的表格,查询结果应返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

不妨假设e1=e2=[6,5,4,3],则子查询的过程如下:
1、e1.Salary=3;则e2.Salary可以取4、5、6;COUNT(DISTINCT e2.Salary)=3
2、e1.Salary=4;则e2.Salary可以取5、6;COUNT(DISTINCT e2.Salary)=2
3、e1.Salary=5;则e2.Salary可以取6;COUNT(DISTINCT e2.Salary)=1
4、e1.Salary=6;则e2.Salary无法取值;COUNT(DISTINCT e2.Salary)=0
则要令COUNT(DISTINCT e2.Salary) < 3 的情况有上述的4、3、2.
也即是说,这等价于取e1.Salary最大的三个值。

㈤ 编写一个 SQL 查询,找出每个部门工资前三高的员工

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部门的信息。

+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
编写一个 SQL 查询,找出每个部门工资前三高的员工。例如,根据上述给定的表格,查询结果应返回:

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

Sql如下:
SELECT
d.Name Department,e1.Name Employee,e1.Salary Salary
FROM
Employee e1,
Employee e2 ,
Department d
WHERE
e1.DepartmentId = e2.DepartmentId
AND e1.Salary <= e2.Salary
and e1.DepartmentId=d.Id
group by e1.id
having count(DISTINCT e2.Salary)<=3
order by d.Name,e1.Salary desc

㈥ 用SQL语句查出员工工资表(WorersSalary)所有信息,工资最高的前三条信息按升序排在最前面,其余的按原序

请说明使用的数据库类型
mysql如下
select distinct * from(
select * from WorersSalary orde by Salary desc limit 0,3 a union
select * from WorersSalary b)
sqlserver如下
select distinct * from(
select top 3 * from WorersSalary orde by Salary desc a union
select * from WorersSalary b)

㈦ sql查询员工的基本工资排名第3-6位的姓名和基本工资

sql查询员工的基本工资排名第3-6位的姓名和基本工资
select top 4 姓名,工资 from 表a where 姓名 not in (select top 2 姓名 from 表a order by 工资 desc) order by 工资 desc

㈧ sql中把雇员信息按照工资的从小到大排列后再选择第10位到15位的人

oracle10g以上及sqlserver2005以上适用

selectt.*from
(select表名.*,row_number()over(orderbysaldesc)rnfrom表名)
wherernbetween10and15

㈨ 列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序。用SQL语句详细介绍一下,谢

select a.deptno,count(*) from emp as a,
(select deptno,avg(sal) as avgsal from emp group by deptno) as b
where a.deptno=b.deptno
and a.sal>b.avgsal
group by a.deptno
order by a.deptno

表名为emp,deptno为部门号
(select deptno,avg(sal) as avgsal from emp group by deptno) as b
这个是查询每个部门的平均工资,并把这个结果集命名为b
然后关联emp表查询
where a.deptno=b.deptno
and a.sal>b.avgsal
这个就是在部门号相同的情况下,查找工资大于平均公司的人
最后count(*) 就是总人数,排序就正常order by 就OK

㈩ 用sql中级函数不用rank之类的求出部门中员工工资在部门中的排名

用分析函数row_number(),rank(),dense_rank()求每个部门的工资前三名
select *
from(
select deptno,ename,sal,
row_number() over(partition by deptno order by sal desc) rn,
rank() over(partition by deptno order by sal desc) rk,
dense_rank() over(partition by deptno order by sal desc) drk
from emp)
where drk<=3;