繁体   English   中英

带分组的SQL子查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM