mysql 每周登录频率

2cmtqfgy  于 2022-12-03  发布在  Mysql
关注(0)|答案(1)|浏览(101)

假设,我有一个表:

classroom_id(int): id of the classroom
user_id (int): id of the user
login_date(date): date of login
login_attempt_id(int): unique id of login

我试图找出一周内登录的频率,所以如果一个学生一周登录3天(以任何顺序),输出将是3。
因此,频率的输出将在0-7的范围内,这意味着,该人在一周的7天中的0-7天登录。
同时,学生可以在同一天多次登录系统。我希望仅在一周内获得唯一的示例。
数据为一个月的数据,输出应包含:

user_id(int): id of the user
week: week numbers.
frequency: frequency of login in that week number

我已经编写了一个查询,但遇到了以下问题:

with cte as(
select distinct classroom_id, 
user_id, 
date_format(login_date,'w') as week,
login_date,
login_attempt_id
from table)

Select classroom_id,
user_id, 
week, 
count(login_date) as frequency from cte 
group by 1,2,3

我不知道如何处理这个问题。任何帮助都将不胜感激。

pxyaymoc

pxyaymoc1#

你不需要CTE
COUNT支持DISTINCT

select classroom_id, 
user_id, 
date_format(login_date,'w') as week,
COUNT(DISTINCT login_date) as frequency 
from table1
GROUP BY classroom_id, 
user_id, 
date_format(login_date,'w')

相关问题