2017-10-10 10 views
0

私はスポーツアナリティクス(ビーチバレーボール)をしており、movesというテーブルを持っています。移動は、例えば、サービスエース、ブロックエラーまたは攻撃勝者(タグによって識別される)である。移動はチームa、チームbのスコアを上げることができます。PostgreSQLは合計を計算し、結果を使用して勝者を返します

いくつかのサンプルmovesデータ。

set, tag, points_team_a, points_team_b 
---,----,--------------,-------------- 
    1, 520,    1,    0 
    1, 510,    0,    0 
    1, 300,    0,    1 
    1, 410,    0,    0 
    1, 620,    0,    0 

私は、全体的な結果を返すために、クエリを持っています。

select 
    moves.set, 
    sum(moves.points_team_a) as team_a, 
    sum(moves.points_team_b) as team_b 
from moves 
where match_uuid = '26d41fc6-13d3-4af7-a5a3-3ec21bf06f03' 
group by set 

それはteam_aは、最初のセット21時12及び第二セット21:18を獲得したことを示しています。

set, team_a, team_b 
    1,  21,  12 
    2,  21,  18 

全体一致結果(この場合はteam_aの2:0)をクエリに追加することはできますか?

+1

質問を編集し、サンプルデータと希望する結果を提供してください。 –

答えて

1

これはあなたが望むものですか?

select m.*, 
     sum((team_a > team_b)::int) over (order by set) as running_a_wins, 
     sum((team_b > team_a)::int) over (order by set) as running_b_wins 
from (select m.set, sum(m.points_team_a) as team_a, sum(m.points_team_b) as team_b 
     from moves m 
     where m.match_uuid = '26d41fc6-13d3-4af7-a5a3-3ec21bf06f03' 
     group by set 
    ) m 
+0

はい、ありがとうございます! – zemirco

関連する問題