gpt4 book ai didi

mysql - 分组依据而不是在哪里选择?

转载 作者:行者123 更新时间:2023-11-29 03:41:19 25 4
gpt4 key购买 nike

我有一个 SQL 语句,它根据 where 子句返回我需要的行,该子句过滤我的 customerID,他们在特定月份成为客户的位置。我需要做的是在过去 40 个月内每月运行一次,但目前这意味着运行 SQL 40 次并更改日期过滤器。

有谁知道我如何让 SQL 对这些信息进行分组而不是过滤日期,因为这将花费我大约 15 个小时来完成,因为有 50 家商店要针对该查询运行。

这是我的 SQL:

select count(customerID), date_format(date_time, '%b %Y'), actionID
from transactions

where date_time = (select min(date_time)
from transactions as T
where actionID=2
and date_time > '2010-07-01 00:00:00'
and T.customerID = transactions.customerID)
and store_id= 1

and customerID IN
(
SELECT customerID
FROM transactions
where store_id = 1
and actionID in (1,6)
and date_time > '2010-07-01 00:00:00'
and date_time < '2010-08-01 00:00:00'
)


group by date_format(date_time, '%b %Y')
order by date_time

我当前过滤的日期“2010-07-01 00:00:00”是我真正想要分组而不是过滤的日期,因此我得到了 2009 年 7 月到 2012 年 10 月每个月的值。

如有任何帮助,我们将不胜感激。

感谢和问候理查德

最佳答案

您似乎已经确切地知道您需要什么。您需要一个将 date_time 截断为月份的列,然后您希望按该列进行分组。

将日期时间截断为该月的第一天并不难。

SELECT CAST(CONVERT(VARCHAR(7), date_time, 120) + '-1' as DATETIME)

因此,您要么需要执行上述日期转换的初始查询,要么将计算列添加到执行此操作的表中,然后按这个“每月的第一天”列进行分组。

关于mysql - 分组依据而不是在哪里选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472754/

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