一个分组查询 每组前 10 的sql 语句
USE tmp
go
CREATE TABLE Employee
(
ID int identity(1,1),
EmpName varchar(20),
EmpSalary varchar(10),
EmpDepartment varchar(20)
);
INSERT INTO Employee
SELECT '张三','5000','开发部' UNION ALL
SELECT '李四','2000','销售部' UNION ALL
SELECT '王麻子','2500','销售部' UNION ALL
SELECT '张三表叔','8000','开发部' UNION ALL
SELECT '李四表叔','5000','开发部' UNION ALL
SELECT '王麻子表叔','5000','销售部'
-- 现在使用来对 部门进行分组,使用over partition by分组,按照工资排序(使用ROW_NUMBER()函数来生成一列)
SELECT * FROM Employee
SELECT * ,ROW_NUMBER() OVER(PARTITION BY EmpDepartment ORDER BY EmpSalary) EmpNumber FROM Employee 这样实现后 创建临时表效率高
下面这样速度低啊 :
SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY EmpDepartment ORDER BY EmpSalary ) EmpNumber FROM Employee1
) t
WHERE EmpNumber <= 10
浙公网安备 33010602011771号