【问题标题】:Active/Inactive Users活动/非活动用户
【发布时间】:2018-03-23 04:34:30
【问题描述】:

我想检查谁是所有活跃用户(过去 7 天都登录)和谁都是非活跃用户(过去 7 天没有登录)。我有 2 个表用户和机构。用户表结构如下:

id  | first_name | email | agency_id | last_login
 __________________________________________________
 1     Sujith      suj@suj   19865      2018/03/01
 2     Naveen      nav@nav   15098      2018/02/09
 3     Salin       sal@sal   18452      2017/12/06

代理商的表结构如下:

id  | first_name |    email |  name |       last_login
 _________________________________________________________________
19865     Sujith      suj@suj  Yatra Travels 2018/03/01
19865     Raghav      rag@rag  Yatra Travels 2018/02/09
15098     Naveen      nav@nav  Travels Ltd   2017/12/06
15098     Monika      mon@mon  Travels Ltd   2017/12/06
18452     Raghu       rag@rag  MK Travels    

解释是用户表包含主要代理详细信息,代理表包含为代理工作的员工。因此查询必须检查哪些机构已登录 7 天(活跃用户),哪些机构未登录 7 天(非活跃用户)。我为活跃用户写了一个查询。我需要重新检查它是否是正确的查询。以及如何为 7 天未登录或 last_login IS NULL 的非活动用户编写查询

SELECT users.first_name, users.email, users.last_name, users.last_login, agencies.name, 
agencies.id as agencyid FROM users  INNER JOIN agencies ON users.agency_id=agencies.id 
where users.last_login between adddate(now(),-7) and now() group by agencies.name 
order by agencies.name

请问有人可以帮帮我吗?提前谢谢。

【问题讨论】:

  • 如何区分以上表格中的非活跃用户?
  • 有一些标准。应该从机构_id 的两个表中获取。要验证的字段是 last_login。我要显示 7 天和 30 天没有登录的用户。
  • 在 SUBDATE(now(),interval 30 DAY) 之间检查我下面 30 天的查询;现在()
  • 任何建议将 GROUP BY 作为解决方案一部分的答案恐怕都和提问者一样被欺骗了。有关实际有用的帮助,请参阅meta.stackoverflow.com/questions/333952/…

标签: php mysql


【解决方案1】:

where users.last_login >= DATE(NOW()) - INTERVAL 7 DAY group by agencies.name 
order by agencies.name

【讨论】:

  • 谢谢。对于 30 天未登录的非活跃用户的查询是什么
  • users.last_login
  • 其中 users.last_login
【解决方案2】:

尝试以下查询活动用户

SELECT users.first_name, users.email, users.last_name, users.last_login, agencies.name, agencies.id as agencyid FROM users  INNER JOIN agencies ON users.agency_id=agencies.id where users.last_login between SUBDATE(now(),interval 7 DAY)  and now() group by agencies.name order by agencies.name

和非活跃用户

SELECT users.first_name, users.email, users.last_name, users.last_login, agencies.name, agencies.id as agencyid FROM users  INNER JOIN agencies ON users.agency_id=agencies.id where (users.last_login < SUBDATE(now(),interval 7 DAY) or users.last_login is null) group by agencies.name order by agencies.name

【讨论】:

  • 它工作完美,非活跃用户的查询是什么?
  • 如何区分非活跃用户,请给一些示例数据
  • 活跃用户是最近7天登录的用户。非活跃用户是最近 7 天没有登录的用户,last_login 字段为 NULL 也是非活跃用户。
  • 选择 users.first_name、users.email、users.last_name、users.last_login、agency.name、agency.id 作为机构ID 从用户内部加入机构在 users.agency_id=agencies.id 哪里(用户.last_login
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2019-08-02
相关资源
最近更新 更多