天天看点

mysql 查询用户_mysql查询——统计每日新用户数量

mysql 查询用户_mysql查询——统计每日新用户数量

点击上"蓝字"关注我们

mysql 查询用户_mysql查询——统计每日新用户数量

下图是一张网站用户活动表(User_Activities),表中包含字段UserId(用户编号)、Activity(用户活动,可取值login、orders、logout)、Date(活动日期),现需要编写一个查询语句,统计网站每日的新用户数量,即统计每日登录用户中首次登录网站的用户数。

mysql 查询用户_mysql查询——统计每日新用户数量

方法一:

第一步,根据UserId分组查询,得出每个用户的最小登录日期即各个用户首次登录网站的日期。

select UserId,min(Date)as login_date

from User_Activities

where Activity='login'

group by UserId;

查询结果如下:

mysql 查询用户_mysql查询——统计每日新用户数量

第二步,将第一步的查询结果当做临时表,分组统计每个login_date的用户数量。

select login_date,count(UserId)as user_count

from

(

select UserId,min(Date)as login_date

from User_Activities

where Activity='login'

group by UserId

)ua

group by login_date

order by login_date;

最终查询结果如下:

mysql 查询用户_mysql查询——统计每日新用户数量

方法二:

第一步,使用窗口函数rank()对UserId、Date进行分组排名。(窗口函数mysql8.0及以上版本可用)

select *,rank() over(partition by UserId order by Date) as rnk

from User_Activities

where Activity='login';

查询结果如下:

mysql 查询用户_mysql查询——统计每日新用户数量

第二步,筛选排名为1的数据并分组统计每个Date的用户数量。

select Date as login_date,count(UserId)as user_count

from

(select *,rank() over(partition by UserId order by Date) as rnk

from User_Activities

where Activity='login'

)ua

where rnk=1

group by Date

order by Date;

最终查询结果如下:

mysql 查询用户_mysql查询——统计每日新用户数量

来都来了,点个在看再走吧~~~

mysql 查询用户_mysql查询——统计每日新用户数量