【发布时间】:2021-11-15 00:48:17
【问题描述】:
到目前为止,这是我的代码。它在 T-SQL 中。
但是,它只选择每年具有最大值的项目,而不是总分。
WITH cte as
(
SELECT
CONCAT(forename,' ',surname) AS driver_name,
year,
(CONVERT(FLOAT,points)) AS race_points,
row_number() over (partition by year order by (CONVERT(FLOAT,points)) desc) as rn
FROM
results AS r
INNER JOIN constructors AS c ON r.constructorId = c.constructorId
INNER JOIN drivers AS d ON r.driverId = d.driverId
INNER JOIN races AS rc ON r.raceId = rc.raceId
)
SELECT * FROM cte
WHERE rn = 1
这就是 sub 的样子
| driver_name | year | race_points |
|---|---|---|
| a | 2011 | 1 |
| a | 2011 | 1 |
| b | 2011 | 2 |
| b | 2011 | 2 |
| c | 2012 | 3 |
| c | 2012 | 3 |
| d | 2012 | 4 |
| d | 2012 | 4 |
我试图让它看起来像这样
| driver_name | year | max_points |
|---|---|---|
| b | 2011 | 4 |
| d | 2012 | 8 |
我目前得到的是这个
| driver_name | year | max_points |
|---|---|---|
| b | 2011 | 2 |
| d | 2012 | 4 |
任何帮助将不胜感激。
【问题讨论】:
-
您没有在 CTE 中汇总您的价值观;添加聚合,您就有了解决方案。
-
非常感谢
标签: sql sql-server aggregate-functions common-table-expression