0

对于游戏,我想按小时计算用户注册数(使用MySQL。)。很简单,像这样:

SELECT COUNT(*), DAY(date_user), HOUR(date_user) 
FROM users, 
GROUP BY DAY(date_user), HOUR(date_user)

在那之后,我只想考虑至少玩过一次游戏的用户。我有第二张桌子上的分数。

SELECT COUNT(*), DAY(date_user), HOUR(date_user) 
FROM users, scores 
WHERE users.id = scores.userid 
GROUP BY DAY(date_user), HOUR(date_user)

太好了...现在,我希望这两个查询生成一个表,例如:

Global signups | Signups of playing users | Day | Hour

我还没有找到一个有效的查询。我应该使用工会吗?还是加盟?

4

1 回答 1

2

这是一种方法:

select 
    day(date_user)
,   hour(date_user)
,   count(distinct u.id) as GlobalSignups
,   count(distinct s.userid) as SignupsOfPlayingUsers
from users u
left join scores s on u.id = s.userid
group by day(date_user), hour(date_user)

计算不同的用户 ID 可以得出用户总数。当左连接失败时,s.useridNULL,并且NULLs不计入count()。所以count(distinct s.userid)返回注册用户的数量。

于 2009-12-27T15:24:55.267 回答