mysql - 查明特定用户是否每天登录

标签 mysql sql

如何查明特定用户是否每天使用 MySQL 中的 SQL 登录?

我有一张这样的 table 。

+----------+---------------------+---------+
| login_id | login_date          | user_id |
+----------+---------------------+---------+
|     8494 | 2016-03-01 00:00:00 |   20703 |
|    22403 | 2016-03-01 00:00:00 |   53473 |
|    23965 | 2016-03-01 00:00:00 |   79722 |
|    30173 | 2016-03-01 00:00:00 |   36396 |
|    34928 | 2016-03-02 00:00:00 |   20703 |
|    38740 | 2016-03-02 00:00:00 |   15758 |
|    42769 | 2016-03-02 00:00:00 |   79722 |
|    44364 | 2016-03-02 00:00:00 |   79722 |
|    45440 | 2016-03-03 00:00:00 |   20703 |
|    49050 | 2016-03-03 00:00:00 |   36396 |
|    50273 | 2016-03-03 00:00:00 |   79722 |
|    50344 | 2016-03-04 00:00:00 |   20703 |
|    51360 | 2016-03-04 00:00:00 |   20703 |
|    54404 | 2016-03-04 00:00:00 |   53473 |
|    61533 | 2016-03-04 00:00:00 |   79722 |
|    72852 | 2016-03-05 00:00:00 |   20703 |
|    74546 | 2016-03-05 00:00:00 |   38289 |
|    76487 | 2016-03-05 00:00:00 |   62529 |
|    82439 | 2016-03-05 00:00:00 |   36396 |
|    90006 | 2016-03-05 00:00:00 |   36396 |
|    90404 | 2016-03-06 00:00:00 |   20703 |
+----------+---------------------+---------+

答案是这样的

user_id, consecutive
20703, 'YES'
53473, 'NO'

2016-03-01 - 2016-03-06 期间每天有 20703 人登录,但 53473 人只登录两次。范围将从整个表格的开始到结束。

最佳答案

那么,你可以这样做:

select user_id,
       ( count(distinct login_date) = cnt_ld ) as everyday_flag
from t cross join
     (select count(distinct login_date) as cnt_ld
      from t
     ) tt
group by user_id, tt.cnt_ld;

请注意,这会将用户与表中的所有日期进行比较。。如果某一天没有登录,而您仍想包括这一天,则使用最大值减去最小值进行比较。

这还会返回一个“ bool ”标志(实际上是 0 或 1)。您可以使用 case 将其转换为 'YES'/'NO',但我发现该数字更易于使用。

关于mysql - 查明特定用户是否每天登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49824945/

相关文章:

java - @DateTimeFormatter 没有前导零只是 yyyy-MM-dd 作为我的 SQL Spring Boot

mysql - 如何在mysql中创建分面搜索?

mysql - SQL自动从另一个表插入ID

mySql 统计所有最新版本

c# - 在 EntityFramework 中更新或删除多个实体的推荐做法是什么?

php - SQL 查询返回错误结果

sql - 确定锁升级的阈值

mysql自动增量和rails 4 :sql structure. sql

mysql - SQL 错误 : USE `most` ; SELECT `item_name` , SUM (`stock_invent` ) AS `Total Items` FROM inventory GROUP BY `item_name

sql - 将 ASP.NET Core 应用程序发布到 Azure 不起作用