gpt4 book ai didi

mysql - 使用 sql 间隔 4 - Mysql

转载 作者:可可西里 更新时间:2023-11-01 08:29:37 24 4
gpt4 key购买 nike

我有一张表,我希望数据间隔为 4,或者,当我使用模数时,记录不是我预期的,PFB `

SELECT (DATE_FORMAT(subscribed_from, '%Y-%m')) AS date_ FROM subscription
WHERE operator = 'tim'
AND DATE_FORMAT(subscribed_from, '%Y-%m-%d') BETWEEN '2013-01-01' AND '2014-12-31'
GROUP BY (DATE_FORMAT(subscribed_from, '%Y-%m'));

它会显示这样的记录

2013-01 
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09

我只想取 4 个数据间隔,下面是我预期的记录。

2013-01
2013-05
2013-09
2014-02

对于间隔为 2 的情况,下面的记录是我预期的

2013-01 
2013-03
2013-05
2013-07
2013-09

如果我使用 modulo % 2 它将从 2013-01 开始并跳转 2,但是问题是如果我想从 2013-02 开始的范围,02 它自己不显示结果。因此,如果 where 子句的月份从 2 开始,它将给出间隔,例如 2,4,6,8,10,12

最佳答案

SELECT date_, SUM(the_metric_you_want_to_aggregate)
FROM (
SELECT 4*FLOOR(
(DATE_FORMAT(subscribed_from, '%Y%m') - 201301)
/4) AS date_,
the_metric_you_want_to_aggregate
FROM subscription
WHERE operator = 'tim'
AND subscribed_from BETWEEN 20130101000000 AND 201412315959
) AS ilv
GROUP BY date_

(其中 201301 是您选择的范围的开始年/月 - 假设这是 4 个月聚合的引用)

请注意,在函数 (...DATE_FORMAT(subscribed_from, '%Y-%m-%d') BETWEEN...) 中包含列引用可防止使用索引。

关于mysql - 使用 sql 间隔 4 - Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566553/

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