繁体   English   中英

显示所有在夏季没有买东西的客户

[英]Show all customers who haven't bought anything in the summer months

我有两个表“ OEHR_Orders”和“ OEHR_Customers”。 在此处输入图片说明 在此处输入图片说明

客户和订单都有链接的Customer_ID。 我现在想显示所有在7月或8月没有购买任何商品的客户。 这是我的查询:

SELECT DISTINCT C.CUST_LAST_NAME ||'.'||SUBSTR(C.CUST_First_Name,1,1) AS "Name"
FROM OEHR_Customers C INNER JOIN OEHR_ORDERS O
ON C.Customer_ID = O.Customer_ID
WHERE EXTRACT(MONTH FROM O.Order_Date) NOT BETWEEN '7' and '8'

不幸的是,这个查询没有给我想要的结果。

有什么想法吗?

SELECT DISTINCT CUST_LAST_NAME ||'.'||SUBSTR(CUST_First_Name,1,1) AS "Name"
FROM OEHR_Customers
WHERE Customer_Id not in (Select Customer_ID from OEHR_ORDERS
            WHERE EXTRACT(MONTH FROM Order_Date) NOT BETWEEN '7' and '8')

我倾向于使用GROUP BYHAVING做到这一点:

SELECT C.CUST_LAST_NAME || '.' || SUBSTR(C.CUST_First_Name, 1, 1) AS "Name"
FROM OEHR_Customers C INNER JOIN
     OEHR_ORDERS O
     ON C.Customer_ID = O.Customer_ID
GROUP BY C.CUST_LAST_NAME || '.' || SUBSTR(C.CUST_First_Name, 1, 1)
HAVING SUM(CASE WHEN EXTRACT(MONTH FROM O.Order_Date) BETWEEN 7 and 8
                THEN 1 ELSE 0 END) = 0;

HAVING子句计算第7个月和第8个月出现的次数。 然后,它将筛选出在这几个月内有购买交易的客户。

您所查询的版本只会吸引在这几个月内没有购买的客户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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