我有EMP表進行排序..
伊諾的ename工資deptmentid
101亞歷2000 10如何Employee數據,基於部門計數
喜歡我有1000名員工的數據,有23個不同的部門..現在我的要求是以這樣的方式對數據進行排序,即哪個部門的數量最高。的員工..
例如,部門50有45名員工(所有部門中最高),那麼這45名員工應該列在第一位。部門-12有3名員工,那麼這3名員工應該被列在最後的聘用表..
我有EMP表進行排序..
伊諾的ename工資deptmentid
101亞歷2000 10如何Employee數據,基於部門計數
喜歡我有1000名員工的數據,有23個不同的部門..現在我的要求是以這樣的方式對數據進行排序,即哪個部門的數量最高。的員工..
例如,部門50有45名員工(所有部門中最高),那麼這45名員工應該列在第一位。部門-12有3名員工,那麼這3名員工應該被列在最後的聘用表..
SELECT Eno, Ename, Salary, E.deptmentid
FROM EMP E INNER JOIN
(SELECT deptmentid, COUNT(Ename) TotalEmps
FROM EMP
GROUP BY deptmentid) Sub
ON E.deptmentid = Sub.deptmentid
ORDER BY TotalEmps DESC
我還有一個問題,我不能使用「獨特」,而我加入3桌? – user3116746
@ user3116746是的,無論您要加入多少個表,您都可以使用Distinct,它將只返回不同的值。如果答案幫助你,請接受答案:) –
是不是可能的Row_Number()和不同的查詢? – user3116746
嘗試這樣的事情,
Declare @Emp table (Eno int, Ename varchar(50), Salary int, deptmentid int)
insert into @Emp values(1,'cvxcv',3,45),(2,'uyyudfdf',3,45),(3,'hhgcvxcv',3,45),(4,'wewecvxcv',3,46)
,(5,'sscvxcv',3,46),(6,'nmmcvxcv',3,47),(7,'erewr',3,47)
select *,dense_rank()over(order by deptmentid)rn from @Emp
這是使用窗口功能的好機會:
select e.*
from (select e.*, count(*) over (partition by departmentmentid) as DepartmentCount
from emp e
) e
order by DepartmentCount desc, DepartmentId;
請注意按DepartmentId排序以及計數。如果兩個部門的人數相同,那麼這將使部門之間的員工聚集在一起。
您也可能會喜歡:
select e.*, row_number() over (partition by departmentid order by newid()) as CounterInDepartment
. . .
此列舉每個部門內的員工。
select employee.name, employee.job, employee.deptmentid,
count(*) over(partition by deptmentid) as [count]
from EMPLOYEE
order by [count] desc, deptmentid
謝謝alain R – user3116746
獲取這些簡歷。我認爲職業生涯需要 –