0

順位表とチーム表の 2 つのテーブルがあります。

Standings has 5 columns: id, teamid, weekid, seasonid, points
Teams has 3 columns: id, name, leagueid

チームが参加したすべての週のチームのすべての順位のすべてのポイントの合計を取得し、そのチームの ID で参加したいと考えています。

単一のクエリでこれを行う方法はわかりませんが、

SELECT sum(s.points), t.name FROM Standings s INNER JOIN Teams t ON s.teamid = t.id WHERE t.leagueid = 1 AND s.seasonid = 1 ORDER BY sum(s.points) DESC LIMIT 3

私がやろうとしていることのようなものです。ありがとう。

編集:

私が抱えている大きな問題の 1 つは、実際にはこのスキーマにアクセスすることを許可されていないことですが、これらの種類の値を持つテスト データセットでこれを使用しています。

チーム

ID | 名前 | リージッド

1 | アルファ | 1

2 | ベータ | 1

3 | ガンマ | 1

立っている

ID | チームID | 週末 | 季節 | ポイント

(アルファ版)

1 | 1 | 1 | 1 | 1

2 | 1 | 2 | 1 | 4

3 | 1 | 3 | 1 | 3

(ベータ版)

4 | 2 | 1 | 1 | 7

5 | 2 | 2 | 1 | 0

6 | 2 | 3 | 1 | 2

(ガンマス)

7 | 3 | 1 | 1 | 4

8 | 3 | 2 | 1 | 4

9 | 3 | 3 | 1 | 5

戻り値を次のようなテーブルにしたい:

名前 | ポイント

アルファ | 8

ベータ版 | 9

ガンマ | 13

4

3 に答える 3

0
SELECT
  Teams.name,
  SUM(Standings.points) AS StandingPoints
FROM Teams
  INNER JOIN Standings
    ON Teams.id = Standings.teamid
WHERE Teams.leagueid = 0
    AND Standings.seasonid = 0
GROUP BY Teams.id
ORDER BY StandingPoints DESC
LIMIT 3
于 2013-04-23T07:49:28.423 に答える
0

他の人が WHERE 基準に HAVING 句を使用している理由が思いつかないので、私のバージョンを投稿します (元のバージョンと非常によく似ています)。

 SELECT t.*
      , s.seasonid
      , SUM(s.points) total
   FROM Team t 
   JOIN Standing s
     ON s.teamid = t.id 
    AND s.seasonid = 1
  WHERE t.leagueid = 1
  GROUP 
     BY t.id
      , s.seasonid
  ORDER
     BY total DESC;
于 2013-04-23T07:52:53.407 に答える