1

テーブルには、Match、Winning_Player_ID、Losing_Player_ID、Quantity_Points_Exchanged_for_that_match の 4 つの列があります。1 つのクエリで、各プレイヤーがすべての試合で獲得したポイントの合計数を表示したいと思います。

ここにテーブルがあります

M WIN LOSE QTY  
1 100 201 10  
2 201 100 05  
3 100 201 05  
4 302 100 05  

出力については、この方法で単一のクエリで合計したいのですが、それを理解できません。

ID WIN LOSE
100 15 10
201 05 15
302 05 00
4

3 に答える 3

1
SELECT p.player ID,
       (SELECT SUM(QTY) FROM tbl WHERE WIN = p.player) WIN,
       (SELECT SUM(QTY) FROM tbl WHERE LOSE = p.player) LOSE
FROM
    (SELECT DISTINCT WIN player FROM tbl
    UNION
    SELECT DISTINCT LOSE FROM tbl) p
于 2012-05-18T00:27:51.717 に答える
1

これをチェックするためのデータベースはありませんが、おそらく次のようなものです。

SELECT player, SUM(winQty) AS WIN, SUM(loseQty) AS LOSE
  FROM ( SELECT win AS player, qty AS winQty, 0 AS loseQty
           FROM myTable
         UNION ALL
         SELECT lose AS player, 0 AS winQty, qty AS loseQty
           FROM myTable
       ) x
  GROUP BY player

更新: UNION を UNION ALL に変更しました

于 2012-05-18T00:35:29.273 に答える
0

答えは次のとおりです。

テーブルを作成します。

CREATE TABLE table_name (
  m int,
  win int,
  lose int,
  qty int);

データを挿入:

INSERT INTO table_name (m, win, lose, qty)
values 
(1, 100, 201, 10),
(2, 201, 100, 05),
(3, 100, 201, 05),
(4, 302, 100, 05);

クエリ:

SELECT id, sum(won), sum(lost) from (
    SELECT win as id, SUM(qty) as won, 0 as lost 
    FROM table_name W GROUP BY win
  UNION
    SELECT lose as id, 0 as won, SUM(qty) as lost
    FROM table_name W GROUP BY lose
  ) sums
GROUP BY ID 

結果:

+------+----------+-----------+
| id   | sum(won) | sum(lost) |
+------+----------+-----------+
|  100 |       15 |        10 |
|  201 |        5 |        15 |
|  302 |        5 |         0 |
+------+----------+-----------+
于 2012-05-18T02:06:18.107 に答える