gpt4 book ai didi

mysql - 仅使用等连接在滑动窗口上聚合

转载 作者:行者123 更新时间:2023-11-30 01:02:27 24 4
gpt4 key购买 nike

我想计算 30 天内的唯一帐户总数。我在 MySQL (InfiniDB) 上使用的引擎似乎只支持在相等条件下连接表。

我的表格如下所示:

sessions (date_id, account_id) =
{ '2013-07-07', 5
'2013-07-07', 5
'2013-07-07', 1
'2013-07-08', 3
'2013-07-09', 3
}

我当前的查询如下所示:

SELECT
date_id, (
SELECT COUNT(DISTINCT account_id)
FROM sessions t2
WHERE t2.date_id BETWEEN DATE_SUB(t1.date_id, INTERVAL 30 DAY) AND t1.date_id
) cnt
FROM sessions t1
GROUP BY date_id

仅支持等连接,因此 BETWEEN 运算符无法连接表。

非常感谢任何帮助:)

最佳答案

我对 InfiniDB 不是特别熟悉,但我认为更干净的是:

SELECT
t1.date_id,
COUNT(DISTINCT t2.account_id) AS Uniques
FROM sessions t1
INNER JOIN sessions t2
ON t2.date_id BETWEEN DATE_SUB(t1.date_id, INTERVAL 30 DAY) AND t1.date_id
GROUP BY t1.date_id;

结果:

DATE_ID                   UNIQUES
July, 07 2013 00:00:00+0000 2
July, 08 2013 00:00:00+0000 3
July, 09 2013 00:00:00+0000 3

sqlfiddle demo

这就是你所说的不支持吗?

关于mysql - 仅使用等连接在滑动窗口上聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com