0

次のようなテーブルがあります。

+------+----------+----------+--------+
|  id  |  team    |   match  |  score |
+------+----------+----------+--------+
|  1   |     1    |    1     |  10    |
|  2   |     2    |    1     |  5     |
|  3   |     1    |    1     |  5     |
|  4   |     1    |    2     |   6    |
|  5   |     2    |    1     |   4    |
+------+----------+----------+--------+

SUM()個々の試合とチームごとにすべてのスコアを計算する必要があります。合計を計算する方法を知っています...

SELECT SUM(score) AS team_a_score WHERE `match`='1'

私はこのようなものを期待したい...

+----------------+
| team_a_score   |
+----------------+
|    24          |
+----------------+

しかし、実際には、チーム 1 と 2 のスコアを別々に取得する必要があるため、このようになります...

+----------------+----------------+
| team_a_score   |  team_b_score  |
+----------------+----------------+
|    15          |     9          |
+----------------+----------------+

これが十分に明確であることを願っています

4

4 に答える 4

6

同じ行に結果が必要なように見えるので、これを使用します。

select sum(case when team = 1 then score end) team_a,
  sum(case when team = 2 then score end) team_b
from yourtable
where `match` = 1

SQL Fiddle with Demoを参照してください

于 2012-09-19T01:30:51.713 に答える
1

これはどう

 SELECT team, SUM(score) AS team_a_score FROM some_table GROUP BY team

結果は(質問で説明されているように)列ではなく、各行にチーム番号と合計スコアが表示されます

+----------+---------------+
|  team    |   score       |
+----------+---------------+
|     1    |    15         |
|     2    |     9         |
于 2012-09-19T01:27:45.053 に答える
-1

使用GROUP_BY:

SELECT SUM(score) AS team_a_score WHERE `match`='1' GROUP_BY team
于 2012-09-19T01:26:49.383 に答える
-1
SELECT team,sum(score) AS team_score
FROM table_missed
WHERE `match`='1'
GROUP by team
于 2012-09-19T01:30:16.580 に答える