2017-01-30 12 views
0

私は一致するものが保存されているテーブルを持っており、その中から現在の順位を示すテーブルを生成したいと思います。これまでのところ私のコードは次のようになります。特定の値に対してのみCOUNTを使用してください

SELECT DISTINCT cname, COUNT(cname) AS games, **COUNT(points WHERE points=3) AS wins**, 1, 0, SUM(goalsscored)-SUM(goalsconceded) AS goaldiff, SUM(po$ 
FROM pmatch 
GROUP BY cname 
ORDER BY point DESC, goaldiff DESC 

私はチームがその試合で得たポイント数に保存されているすべての試合があります。だから、チームが3勝で勝ち、1得点が0得点、0得点が0失点の各試合をカウントするだけです。

ただし、COUNTコマンドは機能しません。 太字のの部分には、チームが3点を獲得した場合のすべての試合をカウントしたいと思っています。どのようにこれを正しく行うのですか?

事前に大きな感謝!

答えて

2

だけCASEを使用します。

SELECT cname, COUNT(cname) AS games, COUNT(case when points=3 then 1 end) AS wins, 1, 0, SUM(goalsscored)-SUM(goalsconceded) AS goaldiff 
FROM pmatch 
GROUP BY cname 
ORDER BY wins DESC, -- probably 
    goaldiff DESC 
+0

'Distinct'が –

+0

つもりはない仕事に無用ですありがとうございました!!私はあなたがそれを書いた方法を使って、完全に動作します –

+0

順に理由point''のそのクエリ – hacker1337ninja

2

使用CASE表現。

クエリ

SELECT cname, 
COUNT(cname) AS games, 
SUM(CASE points WHEN 3 THEN 1 ELSE 0 END) AS wins, 
SUM(CASE points WHEN 1 THEN 1 ELSE 0 END) AS draws, 
SUM(CASE points WHEN 0 THEN 1 ELSE 0 END) AS loses, 
SUM(goalsscored)-SUM(goalsconceded) AS goaldiff 
FROM pmatch 
GROUP BY cname 
ORDER BY 3 DESC, 6 DESC; 
関連する問題