gpt4 book ai didi

mysql - 如果结果子集不包含所需日期,如何过滤掉它?

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

我正在从 MySQL 服务器提取数据并进行分析,以捕获与滚动平均值相差两个标准差的客户量。但是,我不关心对在感兴趣的日期没有任何顾客量的商店进行此分析。在本例中为最大日期。

是否可以过滤掉 SQL 中在所需日期没有任何交易量的 StoreId?

我有一个如下所示的查询:

SELECT CAST(DATE AS DATE), StoreId, COUNT(CustomerId) AS Customer_Volume
FROM CustomerTable
WHERE 1=1
AND DATE >= DATEADD(DAY, -5, GETDATE())
GROUP BY StoreId, CAST(DATE AS DATE)
ORDER BY 2,1

数据如下:

Date       | StoreId | Customer_Volume
---------------------------------
2020-01-18 | 7 | 10
2020-01-19 | 7 | 8
2020-01-20 | 7 | 8
2020-01-21 | 7 | 12
2020-01-18 | 11 | 4
2020-01-19 | 11 | 2

所以我想知道在此示例中是否可以过滤掉 StoreId = 11。

最佳答案

窗口函数是一种方法:

SELECT CAST(DATE AS DATE), StoreId, COUNT(CustomerId) AS Customer_Volume
FROM CustomerTable
WHERE DATE >= DATEADD(DAY, -5, GETDATE()) AND
EXISTS (SELECT 1
FROM CustomerTable ct
WHERE ct2.StoreId = ct.StoreId AND
ct2.Date = CURDATE() - INTERVAL 1 DAY
)
GROUP BY StoreId, CAST(DATE AS DATE)
ORDER BY 2,1

假设最近感兴趣的日期是昨天,您可以使用相关子查询来确保数据可用。

关于mysql - 如果结果子集不包含所需日期,如何过滤掉它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865707/

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