2017-04-10 19 views
0

は私が町を返すようにクエリを記述しようとしている、とランナーの数が5より大きいWhere句でCount()演算子を使用できないのはなぜですか?どうやってこれを回避するのですか?

私のクエリで、各町からのランナーの数が今のようになります。

select hometown, count(hometown) from marathon2016 where count(hometown) > 5 group by hometown order by count(hometown) desc;

はこれでsqlite3の応答:

私が間違っているのは何

Error: misuse of aggregate: count()

、なぜカント私はここ数()、そして私が代わりに使用する必要がありますを使用しています。

答えて

0

次のことを試してください:あなたはWHERE原因で(例えばcountなど)の集計関数を使用しようとしているときに

select 
    hometown, 
    count(hometown) as hometown_count 
from 
    marathon2016 
group by 
    hometown 
having 
    hometown_count > 5 
order by 
    hometown_count desc; 
+0

5人以上の町がリストされている場合にのみ結果を得る方法はありませんか? –

+0

@BryceEdwards私はあなたの質問を誤解しました。私の答えを更新しました。 –

1

、あなたは通常HAVINGの代わりに、WHEREを探しています:

select hometown, count(hometown) 
from marathon2016 
group by hometown 
having count(*) > 5 
order by count(*) desc 

集計は複数の行(GROUP BYで指定)に基づいて計算されるため、集計を使用することはできませんが、WHEREは個々の行をフィルタリングしてGROUP BYをどの行セットに適用するかを決定しますグループ化する前に起こるグループ化後に集計が適用されます)。

+0

素晴らしい、ありがとう! –

+0

@BryceEdwardsこの回答が役に立ちましたら、投票ボタンの下にあるチェックマークをクリックして受諾する必要があります。そうすれば、他の訪問者があなたの問題をどのように解決したかを簡単に知ることができます。ありがとう! –

関連する問題