2017-10-06 13 views
0

私は、広告テーブルに結合された評価テーブルの平均評価を取得するSQLクエリを持っています。WHEREをCOUNT(*)条件に追加するMySQL

私のクエリは正常に動作しますが、WHEREステートメントを追加して2つ以上の評価を取得する広告のみを取得します。

これは私のクエリです:

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
GROUP BY ad_id 

そして、私の目的のクエリ:

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
WHERE num_rates > 1 
GROUP BY ad_id 

しかし、MariaDBは私に言っている:
[のErr] 1054 - 「where句で不明な列 'num_rates' を'

ありがとうと申し訳ありませんが、MySQLの私のnoob

+1

、GROUP BYとHAVING作品を使用すると、あなたはあなたのグループ文で 'having'を使用する必要がありCOUNT – fungusanthrax

+0

のように集約された機能で動作します**持つ**句を、使用することを検討してください。 –

+0

groupbyさんと仕事をしている –

答えて

3

WHERE で列エイリアスを使用することはできません。

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
WHERE COUNT(user_id) > 1 
GROUP BY ad_id 

またはそれ以上

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
GROUP BY ad_id 
HAVING COUNT(user_id) > 1 
+0

うわー、これが答えです(2番目のスニペット)。私は8分まで受け付けますが、ありがとう! –

+0

@bachecubano問題はありません。 –

関連する問題