gpt4 book ai didi

sql - 找出哪些客户在 10 天内购买了超过 75 美元的商品

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

我有下表:

purchase
---------------------
customer VARCHAR
cost DECIMAL
purchase_date DATE

我想获得一份在 10 天内购买总额达到或超过 75 美元的所有客户的列表。

以下 SQL 在过去 10 天内为我提供了此金额:

SELECT customer
FROM purchase
WHERE purchase_date >= (CURRENT_DATE - 10)
GROUP BY customer
HAVING sum(cost) >= 75;

如何扩展此查询以包含任何 10 天的时间段?

Postgresql 已经有一个名为 generate_series 的函数,它可以为我提供从第一个到最后一个的所有购买日期:

SELECT generate_series((select min(purchase_date) from purchase), 
(select max(purchase_date) from purchase),
'1 day') as generated_date;

现在我需要修改上面的查询以使用生成的系列中的天数。这就是我被困的地方。如何为第二个查询中的每个日期运行第一个查询,将 purchase_date >= (CURRENT_DATE - 10) 替换为 purchase_date >= (generated_date - 10)

最佳答案

我认为您可以使用如下所示的横向连接。不过,我无法对其进行测试。

SELECT *
FROM your_table y1
LEFT JOIN LATERAL(
SELECT Customer, SUM(Cost) Cost
FROM your_table y2
WHERE y1.Customer = y2.Customer
AND y2.purchase_date
BETWEEN y1.purchase_date - INTERVAL '10 Day' AND y1.purchase_date
GROUP BY Customer
) AS lat ON TRUE
WHERE lat.cost >= 75
ORDER BY Customer;

这应该返回前 10 天的成本总和 >= 75 的那些行。

关于sql - 找出哪些客户在 10 天内购买了超过 75 美元的商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26931532/

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