gpt4 book ai didi

sql - sql server中有2个相同排名的学生的分数计算

转载 作者:行者123 更新时间:2023-12-02 09:12:13 24 4
gpt4 key购买 nike

排名表

ID  Rank    
1 1
2 1
3 3
4 3
5 5

价格

No  Points  
1 10
2 9
3 8
4 7
5 6

预期输出

ID  Rank    Points  
1 1 9.5
2 1 9.5
3 3 7.5
4 3 7.5
5 5 6

第二名不存在,因此第一分和第二分相加并分配给学生人数例如:(10+9)/2 = 9.5

当我加入 2 个表时

select *
from Rank_table a join
Price b
on a.ID = b.No

我得到的输出为

ID  Rank    No  Points  
1 1 1 10
2 1 2 9
3 3 3 8
4 3 4 7
5 5 5 6

最佳答案

这似乎是一个非常简单的要求,只需使用 AVGOVER 子句即可。

CREATE TABLE [Rank] (ID int, [Rank] int)
CREATE TABLE Price ([No] int, Points int);
GO

INSERT INTO [Rank]
VALUES
(1,1),
(2,1),
(3,3),
(4,3),
(5,5);

INSERT INTO Price
VALUES
(1,10),
(2,9),
(3,8),
(4,7),
(5,6);
GO
SELECT R.ID,
R.[Rank],
AVG(CONVERT(decimal(2,0),P.Points)) OVER (PARTITION BY R.[Rank]) AS Points
FROM [Rank] R
JOIN Price P ON R.ID = P.[No];

GO
DROP TABLE [Rank];
DROP TABLE Price;

关于sql - sql server中有2个相同排名的学生的分数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50874708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com