【发布时间】:2021-09-07 16:34:43
【问题描述】:
这是在一次采访中被问到的。
下面是表格的结构。
Shipments- Shipment_id,Price, Order_id, Ship_date, Delivery_Location, Price, Ship_method , ShipETA,
Customer-Customer_id, order_id, customer_address, prime_eligible
Order - Order_id , Order_Qty, Order_date , Order_location, Item_id , Shipment_id
Item- Item _id , Item_description, Item_Location
问题:2019 年订购量比 2018 年多的客户 ID 列表。
SELECT customer_id
FROM Customer join Order using (order_id)
WHERE YEAR(Order_date) IN (2019)
GROUP BY customer_id
HAVING
SUM(CASE WHEN YEAR(Order_date) = 2019 THEN Order_Qty ELSE 0 END)
> SUM(CASE WHEN YEAR(Order_date) = 2018 THEN Order_Qty ELSE 0 END)
很遗憾,我没有样本数据,任何人都可以帮助解决这个问题。
【问题讨论】:
-
GROUP BY、HAVING、sum case 等
-
是的,我只是坚持如何逐年比较并列出用户的方法,因为我是 SQL 新手,任何示例查询都会有很大帮助。
-
这里需要一些努力。轻松协助您,编造一些数据并找出预期的结果。 minimal reproducible example
-
另外,不同的产品有不同的 SQL 功能集——你想知道哪一个?
-
当然我会设置示例数据并很快发布到这里。这是针对 Oracle 数据库问题的。