繁体   English   中英

MySQL问题按两列分组

[英]Mysql issue with group by two columns

问题:

我有一张桌子,上面有一些比赛结果。 每辆车都有两名驾驶员,每人分别赢得积分。 为了简化工作,我创建了一个表格,其中每辆车都有一行(因此,两个驾驶员分为两列:driver1,driver2),而不是每个驾驶员一个,因为除了驾驶员以外,所有其他列的值都相同每辆车。

例:

+------+-----+---------+---------+--------+
| race | car | driver1 | driver2 | points | + other variables with same value for both drivers
+------+-----+---------+---------+--------+
| GER  |   1 | Michael | Rick    |   20   |
| GER  |   2 | Steve   | Tom     |    8   |
| JAP  |   1 | Michael | Josh    |   20   |
| JAP  |   2 | Steve   | Tom     |    8   |
+------+-----+---------+---------+--------+

如您所见,1号车厢有两个以上的驾驶员。因此,当我想查看两个种族中每个驾驶员的总得分时,应该是这样的结果:

  1. 迈克尔:40
  2. 瑞克:20
  3. 乔希:20
  4. 史蒂夫:16
  5. 汤姆:16

但是,如何对处理两列驱动程序(driver1和driver2)的每个驱动程序的得分进行分组? 还是只需要更改表并为每个驱动程序创建一行?

$sql = "SELECT race, driver1, driver2, points FROM `example-table` GROUP BY ………. ORDER BY `points` DESC";
SELECT driver, SUM(points) as points
FROM
    (SELECT driver1 as driver, points
    FROM `example-table`
    UNION ALL
    SELECT driver2 as driver, points
    FROM `example-table`)T
GROUP BY driver

您可以使用union all运算符以单列形式查询驱动程序,然后group by驱动程序group bysum

SELECT   driver, SUM(points)
FROM     (SELECT driver1 AS driver, points FROM example_table
          UNION ALL
          SELECT driver2 AS driver, points FROM example_table) t
GROUP BY driver
ORDER BY 2 DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM