【问题标题】:Count occurences from one table based on different dates from another table根据另一个表的不同日期计算一个表中的出现次数
【发布时间】:2020-10-23 03:34:15
【问题描述】:

我有两张桌子。第一个表有用户 ID 和期间的开始和结束日期(每个用户不同)

user_id |  start                       |  end
---------------------------------------------------------------
1       |  2019-07-02 13:30:14.103212  |  2021-07-02 13:30:14.103212
2       |  2020-06-27 07:39:30.333681  |  2021-07-02 13:30:14.103212
3       |  2020-06-16 08:30:58.287101  |  2021-07-02 13:30:14.103212
4       |  2020-06-27 19:21:28.014040  |  2021-07-02 13:30:14.103212
5       |  2020-05-28 11:23:15.814459  |  2021-07-02 13:30:14.103212

第二张表具有相同的用户 ID 和登录日期,如下所示:

user_id |  login_time                  |  
----------------------------------------
1       |  2019-07-02 13:30:14.103212  |
2       |  2020-06-27 07:39:30.333681  |
3       |  2020-06-16 08:30:58.287101  |
4       |  2020-06-27 19:21:28.014040  |
5       |  2020-05-28 11:23:15.814459  |
1       |  2019-07-02 13:30:14.103212  |
2       |  2020-06-27 07:39:30.333681  |
3       |  2020-06-16 08:30:58.287101  |
4       |  2020-06-27 19:21:28.014040  |
5       |  2020-05-28 11:23:15.814459  |
1       |  2019-07-02 13:30:14.103212  |
2       |  2020-06-27 07:39:30.333681  |
3       |  2020-06-16 08:30:58.287101  |
4       |  2020-06-27 19:21:28.014040  |
5       |  2020-05-28 11:23:15.814459  |

如何在一个查询中统计每个用户在其特定时间段内从 table1(按 user_id 分组)中登录的所有用户的数量?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:
    SELECT t2.user_id
        ,t2.count(*)
    FROM table1 t1
    INNER JOIN table2 t2 ON t1.user_id = t2.user_id
    WHERE t2.login_time BETWEEN start AND END
    GROUP BY t2.user_id
    

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 2016-04-23
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多