簡體   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