gpt4 book ai didi

mysql - 我正在努力在一个简单的查询中输出正确的 SQL 代码

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

有一个具有以下属性的表:订单:order_id、order_item_id、customer_id、日期、product_id、收入

我需要回答以下问题:2018 年我们获得了多少新客户。(如果客户进行了首次购买,那么我们将其称为新客户(仅适用于该订单))?

我编写了以下查询:

Select Count(customer_id) as New_Customers From Order
Where date < 2019-01-01 AND NOT date < 2018-01-01
Group by customer_id

分配此信息的人查看了它并告诉我,我需要为新客户创建一个过滤器。我认为“Where”子句实现了这一点,但我想没有。

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

最佳答案

解决方案是找到每个客户的第一个日期并检查它是否属于给定的日期范围。

  • 要找出最短(最早)购买日期,我们只需按 customer_id 进行分组,并使用 MIN(date) 即可。
  • 但技巧是我们不能应用 WHERE 子句,因为 GROUP BY 子句在 WHERE 子句之后执行,因此使用 WHERE 子句将删除实际记录,并且数据将不合适。因此,使用 HAVING 子句来过滤分组结果。
SELECT 
customer_id AS New_Customers,
MIN(`date`) First_Purchase_Date
FROM order
GROUP BY customer_id
HAVING MIN(`date`) BETWEEN '2018-01-01' AND '2019-01-01';

关于mysql - 我正在努力在一个简单的查询中输出正确的 SQL 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781616/

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