MySQL题库

MySQL题库
Andy YinVQ1 统计自然周平均登录次数
题目描述
- 现有用户登录日志表user_login_tb(id 自增主键, uid 用户ID, login_date 登录日期)。 示例数据如下:
计算每个自然周内(周一到周日算一个自然周)所有用户的平均登录次数,用户可能在一天内登录多次。结果按每一周的周一升序排序,平均次数保留两位小数。
示例数据对应输出为:
思路解析
用库函数WEEKDAY得到每个日期是星期几,然后使用DATE_SUB转换到当周周一的日期,再按周一日期分组,计算每个每组内用户登录总数(count(id))和用户数(count(distinct uid)),总次数除以总人数就是平均登录次数。保留小数位数用round()。
1 | SELECT |
关键知识点
- WEEKDAY(date): 返回周几,周1返回0,周2返回1。。。周日返回6
- DATE_SUB(date, INTERVAL expr type): 从日期减去指定的时间间隔
- COUNT(DISTINCT(列名)): 记录去重后计数
- ROUND(x, y): 对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位。