【发布时间】:2020-12-15 19:04:58
【问题描述】:
create table Employees (
EMP_ID INT,
SALARY INT
);
insert into Employees (EMP_ID, SALARY) values (1, 1954);
insert into Employees (EMP_ID, SALARY) values (2, 1360);
insert into Employees (EMP_ID, SALARY) values (3, 3366);
insert into Employees (EMP_ID, SALARY) values (4, 7765);
insert into Employees (EMP_ID, SALARY) values (5, 4445);
insert into Employees (EMP_ID, SALARY) values (6, 7064);
insert into Employees (EMP_ID, SALARY) values (7, 5757);
insert into Employees (EMP_ID, SALARY) values (8, 6562);
insert into Employees (EMP_ID, SALARY) values (9, 5279);
insert into Employees (EMP_ID, SALARY) values (10, 7283);
第二张桌子
create table Sales (
EMP_ID INT,
Amount INT
);
insert into Sales (EMP_ID, Amount) values (6, 14254);
insert into Sales (EMP_ID, Amount) values (4, 16208);
insert into Sales (EMP_ID, Amount) values (4, 12818);
insert into Sales (EMP_ID, Amount) values (4, 15381);
insert into Sales (EMP_ID, Amount) values (6, 17029);
insert into Sales (EMP_ID, Amount) values (10, 19704);
insert into Sales (EMP_ID, Amount) values (9, 10030);
insert into Sales (EMP_ID, Amount) values (2, 10416);
insert into Sales (EMP_ID, Amount) values (3, 13993);
insert into Sales (EMP_ID, Amount) values (1, 18381);
insert into Sales (EMP_ID, Amount) values (5, 12855);
insert into Sales (EMP_ID, Amount) values (8, 10215);
insert into Sales (EMP_ID, Amount) values (3, 15046);
insert into Sales (EMP_ID, Amount) values (1, 17121);
insert into Sales (EMP_ID, Amount) values (6, 10556);
insert into Sales (EMP_ID, Amount) values (5, 16914);
insert into Sales (EMP_ID, Amount) values (8, 16786);
insert into Sales (EMP_ID, Amount) values (3, 12797);
insert into Sales (EMP_ID, Amount) values (8, 14005);
insert into Sales (EMP_ID, Amount) values (6, 18943);
我需要按条件更新员工的工资:排名 1 (+ 15%) 排名 2 (+ 10%) 排名 3 (+5 %) 根据其他表格的平均销售额排名。 只需要更新前 3 个等级 因此,在第一步中,我使用 Dense_Rank 制作排名列
SELECT e.EMP_ID,
AVG (Amount) as 'AVG_Amount',
DENSE_RANK () OVER (ORDER BY AVG (Amount) DESC) AS 'DR'
FROM Employees e JOIN Sales s ON e.EMP_ID=s.EMP_ID
GROUP BY e.EMP_ID
EMP_ID AVG_Amount DR
10 19704 1
1 17751 2
6 15195 3
5 14884 4
4 14802 5
3 13945 6
8 13668 7
2 10416 8
9 10030 9
下一步我不明白。我认为需要一个循环+ifs +update ...
请帮忙
【问题讨论】:
-
所以向我们展示您的尝试,以便我们帮助您完成它。
-
"我认为需要循环+ifs+update" SQL 是一种基于集合的语言。你不会循环你的记录。
标签: sql sql-server join sql-update window-functions