mysql - 总结 MySQL 中的前 5 个值

标签 mysql select group-by sum subquery

我有一个 MySQL 表,我在其中存储赛车锦标赛的结果,因此每一行都包含 - 除了其他数据 - 每个车手在特定比赛中的位置。我想获得某个车手的前 5 名的总和(例如,如果一个车手的最佳位置是 1、2、2、4、5,我希望 MySQL 返回 14)。我正在尝试做的是:

SELECT driver, SUM(position)
FROM results
WHERE (race, season, position) IN
   (SELECT race, season, position
    FROM results
    WHERE driver = "Vettel"
    ORDER BY position ASC
    LIMIT 5) 
AND driver = "Vettel"

当然,(race, season, position) 是“结果”表的主键。现在,问题是我不能真正让它工作,因为 MySQL 还不支持在内部子查询中使用 LIMIT。你会怎么做?

为了获得额外的荣誉 - 而不是单个驱动程序,有没有办法通过单个查询获得每个驱动程序的前 5 个结果的总和?

最佳答案

试试这个:

SELECT driver, SUM(`position`)
FROM (SELECT driver, race, season, `position`, 
             IF(@lastDriver=(@lastDriver:=driver), @auto:=@auto+1, @auto:=1) indx 
      FROM results, (SELECT @lastDriver:=0, @auto:=1) A 
      ORDER BY driver, `position`) AS A  
WHERE indx <= 5 
GROUP BY driver ;

关于mysql - 总结 MySQL 中的前 5 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294003/

相关文章:

python - Pandas percentrank 基于每个索引中的组

mysql - 计算 SQL 表中两列的重复项

mysql - 如何在 mac 上卸载未使用的 MySQL 版本?

Android从mysql服务器获取包含特殊/复制粘贴字符的数据

mysql - 需要在没有 UNION 的情况下获得期望的结果

mysql - (ASP) MS Access -> MySQL : Error in Select, 其中 [..] 字符串

python - pandas 中的分组和转换

mysql - Multi-Tenancy : Hibernate with MySQL

mysql - 我可以更快地恢复 mysql 数据库吗?

json - 使用 jq 通过搜索子键/值对来选择父级