簡體   English   中英

SQL查詢給定月份的所有購買

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM