Mysql 不显示具有多个实例的用户的平均值
基本上,我对SQL是相当陌生的,我正在玩弄它。这很有趣,基本上我是在为每个有多个游戏会话的用户选择用户名和平均游戏时间。这是我的下表:Mysql 不显示具有多个实例的用户的平均值,mysql,sql,Mysql,Sql,基本上,我对SQL是相当陌生的,我正在玩弄它。这很有趣,基本上我是在为每个有多个游戏会话的用户选择用户名和平均游戏时间。这是我的下表: id | userId |gameTime | ________________________ 1 | 1 | 10 | 2 | 2 | 10 | 3 | 3 | 15 | 4 | 1 | 10 | 5 | 2 | 25
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的所有实例及其总平均时间。我不想在最后显示计数行
我编写了我的脚本,但是它没有显示没有计数(userID)的表,,它甚至只显示了一次userID,不超过1
这是我的剧本:
SELECT userID, AVG(gameTime)
FROM game_session
WHERE ((SELECT COUNT(userID) FROM game_session) > 1)
GROUP BY userID
我哪里做错了?我想你在找一个
有子句的人
试试这个:
select userID, avg(gameTime)
from game_session
group by userID
having count(userID) > 1;
提示:拥有
用于聚合过滤。其中
用于聚合前过滤,而拥有
-用于聚合后过滤。@GordonLinoff抱歉,伙计,我不太同意你的观点。你能帮我个忙吗,这意味着lotGametime看起来很像一个整数。工作起来很有魅力!谢谢你,伙计。我哪里做错了?另外,您使用的是WHERE
而不是have
,这意味着什么。阅读更多的groupby
WHERE和have的区别是什么?另外,您为什么不必进行选择计数(userID)?您可以在此处阅读更多关于拥有的信息:。您可以将have
视为用于替代WHERE
的聚合函数,如AVG
,SUM
等。