【发布时间】:2017-11-23 19:02:39
【问题描述】:
考虑这个示例数据:
+----------+------+--------+-----------------+
| username | qnum | qvalue | date |
+----------+------+--------+-----------------+
| Linda | 1 | 2 | 11/14/2017 7:25 |
+----------+------+--------+-----------------+
| Fred | 1 | 1 | 11/23/2017 7:59 |
+----------+------+--------+-----------------+
| Brian | 5 | 2 | 11/17/2017 7:25 |
+----------+------+--------+-----------------+
| Sandra | 6 | 1 | 11/25/2017 7:26 |
+----------+------+--------+-----------------+
| Tom | 6 | 1 | 11/22/2017 7:32 |
+----------+------+--------+-----------------+
| Paul | 6 | 1 | 11/22/2017 7:36 |
+----------+------+--------+-----------------+
| Andrew | 7 | 2 | 11/23/2017 7:37 |
+----------+------+--------+-----------------+
| Luke | 3 | 1 | 11/23/2017 8:03 |
+----------+------+--------+-----------------+
| William | 8 | 1 | 11/23/2017 8:03 |
+----------+------+--------+-----------------+
| Linda | 9 | 2 | 11/15/2017 8:03 |
+----------+------+--------+-----------------+
| Brian | 3 | 2 | 11/17/2017 8:04 |
+----------+------+--------+-----------------+
| Joan | 9 | 1 | 11/23/2017 8:04 |
+----------+------+--------+-----------------+
| Chris | 8 | 1 | 11/23/2017 8:04 |
+----------+------+--------+-----------------+
| Kim | 8 | 1 | 11/15/2017 8:04 |
+----------+------+--------+-----------------+
我正在尝试找到上周 qvalue 总和最高的人。我可以使用以下 SQL 获取此信息,但我的问题是,如果多个用户获得最高分,那么它不会显示他们的两个名字,因为我使用的是 LIMIT 函数。有没有办法同时使用 max 和 sum 来获得所需的结果?期望的结果是 Linda 和 Brian 都列出的结果集,因为上周他们的总分均为 4 并且并列。
SELECT username, SUM(qvalue) AS score FROM trivia_scoreboard
WHERE `date` >= CURDATE() - INTERVAL DAYOFWEEK(CURDATE())+6 DAY AND `date` < CURDATE() - INTERVAL DAYOFWEEK(CURDATE())-1 DAY
GROUP BY username
ORDER BY score DESC
LIMIT 1
【问题讨论】:
-
MariaDB 的版本是多少?最新的支持 CTE。
-
@PaulSpiegel mysql Ver 15.1 Distrib 5.5.56-MariaDB,适用于 Linux (x86_64)
-
请参阅mysql.rjweb.org/doc.php/groupwise_max,了解使用和不使用 dups 获得 groupwise max 的有效方法。