【发布时间】:2020-10-28 01:24:18
【问题描述】:
Credit: Leetcode 1308. Running Total for different Genders
样本分数表:
+-------------+--------+------------+--------------+
| player_name | gender | day | score_points |
+-------------+--------+------------+--------------+
| Aron | F | 2020-01-01 | 17 |
| Alice | F | 2020-01-07 | 23 |
| Bajrang | M | 2020-01-07 | 7 |
| Khali | M | 2019-12-25 | 11 |
| Slaman | M | 2019-12-30 | 13 |
| Joe | M | 2019-12-31 | 3 |
| Jose | M | 2019-12-18 | 2 |
| Priya | F | 2019-12-31 | 23 |
| Priyanka | F | 2019-12-30 | 17 |
+-------------+--------+------------+--------------+
要求:编写一个 SQL 查询来查找每个性别每天的(累积)总分。 按性别和日期对结果表进行排序。示例结果表如下:
+--------+------------+-------+
| gender | day | total |
+--------+------------+-------+
| F | 2019-12-30 | 17 |
| F | 2019-12-31 | 40 |
| F | 2020-01-01 | 57 |
| F | 2020-01-07 | 80 |
| M | 2019-12-18 | 2 |
| M | 2019-12-25 | 13 |
| M | 2019-12-30 | 26 |
| M | 2019-12-31 | 29 |
| M | 2020-01-07 | 36 |
+--------+------------+-------+
我的代码如下。我不明白为什么它只返回一行[{"headers": ["gender", "day", "total"], "values": [["F", "2019-12-30", 184] ]}],即使使用 GROUP BY。
SELECT s1.gender, s1.day,
SUM(CASE WHEN s1.day < s2.day AND s1.gender = s2.gender THEN s1.score_points ELSE 0 END) AS total
FROM Scores s1, Scores s2
GROUP BY s1.gender AND s1.day
ORDER BY s1.gender AND s1.day
如果有人可以帮助我,非常感谢!
【问题讨论】:
-
指定 MySQL 版本。
-
要求:编写一个 SQL 查询,找出每个性别每天的总分。 ... 示例结果表如下: 显示的结果是累积和。
标签: mysql sql group-by sum case-when