㈠ 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;