gpt4 book ai didi

php - MySQL 最高订购者(按电子邮件分组),上个月有订单

转载 作者:行者123 更新时间:2023-11-29 08:15:16 24 4
gpt4 key购买 nike

我正在尝试通过电子邮件吸引顶级买家。我正在这样做:

SELECT email, MAX(dt) FROM orders GROUP BY email ORDER BY COUNT(*) DESC;

这有效,我得到了按电子邮件分组的顶部重复行。因此,通过电子邮件排名靠前的订单,按降序排列。

我现在遇到的问题是只能看到不到一个月前的订单。

我尝试了类似以下的操作,但收到错误:

SELECT email, MAX(dt) FROM orders WHERE TIMESTAMPDIFF(MONTH,MAX(dt),NOW()) < 1 GROUP BY email ORDER BY COUNT(*) DESC;

错误:

Invalid use of group function

我还尝试过在 NOW() 和 NOW() 之间使用 WHERE MAX(dt) - INTERVAL 1 MONTH,但出现了相同的错误。

有人知道如何在 MySQL 中完成此操作吗?

目标仅是那些在上个月下过订单的人。

最佳答案

SELECT email, MAX(dt) last_order_time
FROM orders all_orders
JOIN (SELECT DISTINCT email
FROM orders
WHERE TIMESTAMPDIFF(MONTH, dt, NOW()) < 1) recent
USING (email)
GROUP BY email
ORDER BY COUNT(*) DESC

或者:

SELECT email, MAX(dt) last_order_time
FROM orders
GROUP BY email
HAVING TIMESTAMPDIFF(MONTH, last_order_time, NOW()) < 1
ORDER BY COUNT(*) DESC

第二个版本更简单,但可能效率较低,因为它会先计算所有电子邮件的计数和最大值,然后再过滤掉最近没有订单的电子邮件。

关于php - MySQL 最高订购者(按电子邮件分组),上个月有订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748255/

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