mysql:顺序 ->限制 ->总和...可能吗?

标签 mysql group-by sum sql-order-by sql-limit

我因以下问题而失去了它:

我有一张包含参与者和积分的表格。每个参与者最多可以有 11 分条目,我只想要前 6 分的总和。

在此示例中,假设我们想要 3 个中的前 2 个

+----+---------------+--------+
| id | participantid | points |
+----+---------------+--------+
|  1 |   1           |  11    |
+----+---------------+--------+
|  2 |   3           |   1    |
+----+---------------+--------+
|  3 |   3           |   4    |
+----+---------------+--------+
|  4 |   2           |   3    |
+----+---------------+--------+
|  5 |   1           |   5    |
+----+---------------+--------+
|  6 |   2           |  10    |
+----+---------------+--------+
|  7 |   2           |   9    |
+----+---------------+--------+
|  8 |   1           |   3    |
+----+---------------+--------+
|  9 |   3           |   4    |
+----+---------------+--------+

因此我想要类似的东西

+---------------+--------+
| participantid | points |
+---------------+--------+
|   2           |  19    |
+---------------+--------+
|   1           |  16    |
+---------------+--------+
|   3           |   8    |
+---------------+--------+

(应按结果点进行 DESC 排序)

这对于 mysql 来说是可能的吗?在一个查询中?

哦,生成的参与者 ID 应该解析为另一个“参与者”表中的真实姓名,其中

+----+------+
| id | name |
+----+------+
| 1  | what |
+----+------+
| 2  | ev   |
+----+------+
| 3  | er   |
+----+------+

但这应该可以通过在某个时刻加入来实现......我知道......

最佳答案

使用 ROW_NUMBER() in MySQL 中的答案之一行数,然后修改以获得顶部。

SELECT ParticipantId, SUM(Points)
FROM
(
  SELECT a.participantid, a.points, a.id, count(*) as row_number
  FROM scores a
    JOIN scores b ON a.participantid = b.participantid AND cast(concat(a.points,'.', a.id) as decimal) <= cast(concat(b.points,'.', b.id) as decimal)
   GROUP BY a.participantid, a.points, a.id
 ) C
 WHERE row_number IN (1,2)
 GROUP BY ParticipantId

关系有问题,直到我用 ID 任意破坏它们

关于mysql:顺序 ->限制 ->总和...可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30491620/

相关文章:

python - 在 flaskext.mysql 中寻找 dictcursor 的等价物

mysql - 更新两个不同表中的两个不同列

mysql - 如何在mysql中添加两个求和值

mysql - 在 SQL 中使用聚合值和非聚合值

php - MySQL 选择总和然后两个分组

r - 如何将 [i] 的每个元素的 j=1 相加到 (i-1)(文章中的输入公式)

c# - 如何在现有远程数据库中添加表并将其链接到 Entity Framework 模型?

php - mysql 结果在这里被截断,但那里没有

r - Dplyr:如何分组(全部)

HIVe:将 Cast 与 COALESCE 结合使用并为其设置别名