[英]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號車廂有兩個以上的駕駛員。因此,當我想查看兩個種族中每個駕駛員的總得分時,應該是這樣的結果:
但是,如何對處理兩列驅動程序(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 by
並sum
:
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.