私はSQLを初めて使い、オンラインチュートリアルから基本を取り上げようとしています。私は質問に固執し、いくつかのアドバイスを感謝します。PostgreSQLのクエリデータ集計デフォルト値
現在のところ、目標は、クエリを使用してトーナメントのための選手立てテーブルを作成することです。私は2つのテーブルを持っています。選手と試合。
私は勝利を集約する必要があり、これを行うに一致するtournament=> select * from players;
id | name
----+------------------
19 | Melpomene Murray
20 | Randy Schwartz
46 | Ricardo
(3 rows)
tournament=> select * from matches;
winner_id | loser_id
-----------+----------
19 | 20
(1 row)
:
id | name | wins | p_matches
----+------------------+------+-----------
19 | Melpomene Murray | 1 | 1
20 | Randy Schwartz | 0 | 1
46 | Ricardo | 0 | 0
今、これは私の最高の推測です:
tournament=> select players.id, players.name, subq.wins, subq2.p_matches from players,
(select players.id,count(players.id) as wins from players,matches
where matches.winner_id = players.id group by players.id) as subq,
(select count(*) as p_matches from matches) as subq2;
id | name | wins | p_matches
----+------------------+------+-----------
19 | Melpomene Murray | 1 | 1
20 | Randy Schwartz | 1 | 1
46 | Ricardo | 1 | 1
トラブルの大きな塊が私の由来サブクエリ。私はそれを個別に実行すると、条件付きのために1行が得られます。私はすべてのIDをゼロに保っている行がゼロであるようにリストしたいと思っています。
tournament=> select players.id,count(players.id) as wins from players,matches
where matches.winner_id = players.id group by players.id;
id | wins
----+------
19 | 1
私はこのようなことができると聞いたことがありますが、私はそれを動作させることができませんでした。思考?
これはトリックを行うようだ、と私は十分にその要点を取得します。ありがとうございました! –