gpt4 book ai didi

mysql - 在 MySQL 中运行日期总和

转载 作者:行者123 更新时间:2023-11-29 16:40:57 25 4
gpt4 key购买 nike

我有这张表,其中 id_user=7

表格

7    2018-11-12
7 2018-11-12
7 2018-11-13
7 2018-11-13
7 2018-11-13
7 2018-11-13
7 2018-11-14
7 2018-11-15
7 2018-11-15
7 2018-11-15
7 2018-11-15
7 2018-11-15
7 2018-11-16
7 2018-11-16
7 2018-11-16
7 2018-11-16
7 2018-11-16
7 2018-11-16
7 2018-11-16

我想返回用户每天出现的次数,以及前几天的累计和

到目前为止我已经尝试过了...

SELECT COUNT(*)
FROM posts
WHERE id_user='7'
GROUP BY DATE(date)

预期输出

 day 12/11/2018 > 2 (2)
day 13/11/2018 > 4 (6)
day 14/11/2018 > 1 (7)
day 15/11/2018 > 5 (12)
day 16/11/2018 > 7 (19)

如何获取括号之间的数字?

最佳答案

在没有任何窗口函数或用户变量的情况下运行求和需要将表与其自身连接起来并找出排名低于当前的行。这是一个昂贵的操作,但比用户变量更可靠。

SELECT main.id_user, main.date, main.c AS today_count, main.c + COUNT(prev.date) AS running_count
FROM (
SELECT id_user, date, COUNT(*) AS c
FROM posts
GROUP BY id_user, date
) AS main
LEFT JOIN posts AS prev ON prev.id_user = main.id_user AND prev.date < main.date
GROUP BY main.id_user, main.date, main.c
ORDER BY main.date DESC

有多种方法可以编写上述查询,其中一些可能比其他查询稍微高效,但在更大的数据集上不会出现奇迹。

Demo on DB Fiddle

关于mysql - 在 MySQL 中运行日期总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53351416/

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