[英]SQL Sub query with Grouping
SELECT customer_email, count(*) AS Order_Count,
MAX(created_at) as Last_Order_Date,
SUM(base_total_paid) AS Total_Lifetime_Sales,
SUM(base_total_offline_refunded+base_total_online_refunded) AS Refund_Total,
FROM mage_sales_order AS o
WHERE o.created_at > “2018-01-01”
AND
value NOT IN (Select customer_email
FROM mage_sales_order
WHERE WHERE o.created_at < “2018-10-01”)
尝试删除上周已购买的订单,但是卡在了哪里,而且不确定! 感谢您的任何帮助!
我认为您想删除订购了<'2018-01-01'的电子邮件ID,因此将在查询下方
SELECT customer_email, count(*) AS Order_Count,
MAX(created_at) as Last_Order_Date,
SUM(base_total_paid) AS Total_Lifetime_Sales,
SUM(base_total_offline_refunded+base_total_online_refunded) AS Refund_Total
FROM mage_sales_order AS o
WHERE o.created_at > '2018-01-01' AND
customer_email NOT IN (Select customer_email
FROM mage_sales_order
WHERE o.created_at < '2018-10-01'
)
group by customer_email
您需要group by
。 您的问题的答案是:
SELECT customer_email, count(*) AS Order_Count,
MAX(created_at) as Last_Order_Date,
SUM(base_total_paid) AS Total_Lifetime_Sales,
SUM(base_total_offline_refunded+base_total_online_refunded) AS Refund_Total
FROM mage_sales_order AS o
WHERE o.created_at < CURRENT_DATE - INTERVAL '1 week'
GROUP BY customer_email;
如果要过滤最近未下订单的客户 ,请执行以下操作:
SELECT customer_email, count(*) AS Order_Count,
MAX(created_at) as Last_Order_Date,
SUM(base_total_paid) AS Total_Lifetime_Sales,
SUM(base_total_offline_refunded+base_total_online_refunded) AS Refund_Total
FROM mage_sales_order AS o
GROUP BY customer_email
HAVING MAX(o.created_at) < CURRENT_DATE - INTERVAL '1 week'
请注意,日期/时间函数因数据库而异,因此确切的语法可能因所使用的数据库而异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.