SQL - 不同总和的最大值

时间:2015-09-23 12:00:41

标签: sql sum subquery max

所以我还在处理我的足球经理档案。 以下是导致每个季节总积分的查询:

SELECT
p.username,
SUM(CASE WHEN m.season_id=4 THEN points END) as 'season14/15',
SUM(CASE WHEN m.season_id=5 THEN points END) as 'season15/16',
SUM(m.points) AS total_points 
FROM 
players p
INNER JOIN 
matchdays m ON p.userid = m.userid
GROUP BY p.userid
ORDER BY total_points DESC`

结果是:

+----------+-------------+-------------+--------------+
| username | season14/15 | season15/16 | total_points |
+----------+-------------+-------------+--------------+
| USER 1   | 1111        | 111         | 1222         |
| USER 2   | 999         | 222         | 1221         |
| USER 3   | 888         | 333         | 1221         |
| USER 4   | 777         | 444         | 1221         |
+----------+-------------+-------------+--------------+ 

我要做的是,显示具有最大值的字段。

在这种情况下:第14/15季中的用户1。

最终网站上的输出应该是:

“一个赛季的最高得分是用户1,在14/15赛季得到1111分”。

我尝试了GREATEST和子查询等几个方面。

到目前为止没有成功。

1 个答案:

答案 0 :(得分:1)

您可以按用户和季节进行分组,对点进行求和,然后按降序排列聚合点,然后获取第一个结果(例如,在SQL Server中使用TOP子句)

SELECT TOP 1 p.userid, m.season, sum(points) as points
FROM p INNER JOIN m ON p.userid = m.userid
GROUP BY p.userid, m.season
ORDER BY points desc