所以我还在处理我的足球经理档案。 以下是导致每个季节总积分的查询:
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和子查询等几个方面。
到目前为止没有成功。
答案 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