2017-12-12 4 views
0

基本的に、私はかなり新しいSQLです。楽しく興味深いです。基本的に、複数のゲームセッションを持つユーザーごとにuserIdと平均gametimeを選択しようとしています。これは私の下のテーブルです:複数のインスタンスを持つユーザーの平均値が表示されない

id | userId |gameTime | 
________________________  
1 | 1 |  10 | 
2 | 2 |  10 | 
3 | 3 |  15 | 
4 | 1 |  10 | 
5 | 2 |  25 | 
_________________________ 


CREATE TABLE game_session(
    id INTEGER PRIMARY KEY, 
    userId INTEGER NOT NULL, 
    gameTime DECIMAL NOT NULL); 

INSERT INTO game_session VALUES 
    (1, 1, 10), 
    (2, 2, 10), 
    (3, 3, 15), 
    (4, 1, 10), 
    (5, 2, 25); 

私は、userIDのすべてのインスタンスとその合計平均時間を表示したいだけです。私は最後にカウント行を表示したくありません。

は、私は私のスクリプトを書きましたが、それは COUNT(ユーザーID)を使用せずにテーブルが表示されておらず、それも例えば一回、多くて1以上のためのユーザーIDを示しています!

これは私のスクリプトです:

私は間違っているつもりです
SELECT userID, AVG(gameTime) 
FROM game_session 
WHERE ((SELECT COUNT(userID) FROM game_session) > 1) 
GROUP BY userID 

+3

ヒント: 'HAVING'を集計にフィルタリングするため。 –

+0

'WHERE'は事前集約フィルタリングのためのものであり、' HAVING'は集約後のものです。 –

+0

@GordonLinoff申し訳ありませんが、私はあなたと結婚していません。あなたは私を助けてください、多くを意味するでしょう –

答えて

1

私はあなたがhaving句を探していると信じています。

これを試してみてください:

select userID, avg(gameTime) 
from game_session 
group by userID 
having count(userID) > 1; 
+0

CHARMのように働いた!ありがとう。どこが間違っていたのですか?またGROUP BYの意味は –

+0

あなたは 'HAVING'ではなく' WHERE'を使っていました。 'GROUP BY'の詳細[here](https://www.w3schools.com/sql/sql_groupby.asp) – Fishdigger

+0

WHEREとHAVINGの違いは何ですか?また、SELECT COUNT(userID)を実行する必要はありませんでしたか? –

関連する問題