mysql查询一个月未登录_mysql – 在过去n个月内未登录的用户

以下查询将返回从现在起10个月内的每个月差异的不同ID的计数.

SELECT

12 * (YEAR(CURDATE()) - YEAR(last_login)) + (MONTH(CURDATE()) - MONTH(last_login)) AS months,

count(DISTINCT id) cnt

FROM

tmp_last_login

WHERE last_login >= DATE_SUB(CURDATE(), INTERVAL 10 MONTH)

GROUP BY months;

要么

您也可以使用PERIOD_DIFF函数.

SELECT

PERIOD_DIFF(DATE_FORMAT(CURDATE(),'%Y%m'),DATE_FORMAT(last_login,'%Y%m')) AS months,

count(DISTINCT id) cnt

FROM

tmp_last_login

WHERE last_login >= DATE_SUB(CURDATE(), INTERVAL 10 MONTH)

GROUP BY months;

注意:如果同一用户有多个last_login条目,则需要找到每个用户的最长上次登录时间,然后完成剩下的工作.

SELECT

PERIOD_DIFF(DATE_FORMAT(CURDATE(),'%Y%m'),DATE_FORMAT(t.max_last_login,'%Y%m')) AS months,

count(t.id) cnt

FROM

(

SELECT

id,

MAX(last_login) max_last_login

FROM tmp_last_login

GROUP BY id

) AS t

WHERE t.max_last_login >= DATE_SUB(CURDATE(), INTERVAL 10 MONTH)

GROUP BY months;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值