[英]SQL Query for all purchases in a given month
我正在閱讀SQL教程,並遇到了這個問題。 我被困了一段時間。
顧客
id INTEGER PRIMARY KEY
lastname VARCHAR
firstname VARCHAR
購買
id INTEGER PRIMARY KEY
customers_id INTEGER FOREIGN KEY customers(id)
purchasedate DATETIME
purchaseamount REAL
Write a statement that gives a list of all customers who purchases something this month.
我知道我想內部聯接customer_id上的表,然后獲取月份為2月的客戶名稱,這看起來正確嗎?
SELECT * from Purchases
inner join Customers
on Purchases.customers_id=Customers.id
WHERE MONTH(purchasedate) = 2
是的,或者為了避免您可以撰寫整個distinct
業務
SELECT id, LastName, firstname FROM Customers
WHERE EXISTS ( SELECT 1 FROM Purchases
WHERE customers_id=Customers.id
AND MONTH(purchasedate)=2 AND YEAR(purchasedate)=2016 )
我將使用EXISTS
來避免重復
SELECT Customers.id,
Customers.LastName,
Customers.firstname
FROM Customers
WHERE EXISTS (SELECT 1
FROM Purchases
WHERE Purchases.customers_id = Customers.id
AND Month(purchasedate) = 2)
考慮到您要提取每年2
個月內購買的客戶信息
您的查詢將返回一個具有重復名稱的列表。 只需添加DISTINCT
不要使用*
,只需輸入您需要的字段即可。
還包括id
,以防兩個ppl的名字和姓氏相同
SELECT DISTINCT Customers.id, Customers.LastName, Customers.firstname
from Purchases
inner join Customers
on Purchases.customers_id = Customers.id
WHERE MONTH(purchasedate) = 2
如果您只想要當月的銷售量。 您需要指定RDBMS,因為日期函數不同。
例如在postgres sql中,您可以在Postgres中使用“ 獲取月份的第一個日期”
SELECT DISTINCT Customers.id, Customers.LastName, Customers.firstname
from Purchases
inner join Customers
on Purchases.customers_id = Customers.id
WHERE date_trunc('month', current_date) = date_trunc('month', purchasedate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.