查找最近6个月内所有活动的用户

问题描述 投票:0回答:1

我正在寻找关于检索过去6个月中所有活动的用户ID列表的最佳解决方案。

简化的表结构和数据如下:

id client_id created_at
 1         1 2019-07-01
 2         2 2019-07-01
 3         1 2019-08-01
 4         1 2019-08-15
 5         1 2019-09-01
 6         1 2019-10-01
 7         1 2019-11-01

我需要检索最近6个月中至少有一项活动的用户列表。在前面的示例中,仅client_id 1

我以为可以参加,但似乎太昂贵了。

有什么好主意吗?

mysql clickhouse
1个回答
0
投票

您可以将GROUP BYHAVING一起使用:

SELECT client_id
FROM table_name
WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 6 MONTH) AND NOW()
GROUP BY client_id
HAVING COUNT(DISTINCT CONCAT(YEAR(created_at), MONTH(created_at))) = (SELECT COUNT(DISTINCT CONCAT(YEAR(created_at), MONTH(created_at))) FROM table_name)

demo on dbfiddle.uk

© www.soinside.com 2019 - 2024. All rights reserved.