2017-05-29 66 views
0

我想添加價格和平均價格只有特定的日期。SQL查詢檢索連續特定日期的價格總和

product | price| date| month| year 
------- | -----|-----|------|------ 
pepsi | 34 | 01 | 05 | 2017 
maaza | 20 | 08 | 05 | 2017 
fruity | 40 | 15 | 05 | 2017 
sprite | 34 | 16 | 05 | 2017 
7up  | 22 | 17 | 05 | 2017 

例如,我想總結和平均產品價格01/05/2017,08/05/2017,15/05/2017。即在本月的所有星期一。

因此,產品週一購買百事可樂,馬紮果味。 價格總和爲34 + 20 + 40 = 94.
平均值爲94/3。
這樣,我會收集所有價格平均

我有SQL的一個基本的瞭解。這裏是查詢我已經嘗試過

SELECT SUM(price) 
FROM order_history; 

感謝您的幫助。

+0

MySQL和SQL數據庫兩者。 –

+0

將日期/時間存儲爲單個實體 – Strawberry

回答

0

可以使用AVG聚合函數WHERE,如:

SELECT AVG(price) 
FROM order_history 
WHERE date IN (01, 08, 15) 
AND month = 05 
AND year = 2017; 
0

使用的IN子句僅包括那些date值對應於星期一:

SELECT SUM(price), AVG(price) 
    FROM order_history 
    WHERE month = 5 
     AND year = 2017 
     AND date IN (1, 8, 15, 22, 29) 

(很明顯,你可以更新根據需要的monthyear值)

最後 - 如果您將整個日期放在一列中,您可以輕鬆使用WEEKDAY函數來簡化此操作,並要求所有日期爲「星期一」,例如WHERE WEEKDAY(full_date) = 0(0 =星期一,1 =星期二等)

+0

感謝您的幫助 –

1

你應該做的第一件事就是不要使用日期列這樣分裂,因爲處理日期,如轉換和東西的許多問題。你應該有一個時間戳工作,但讓我們嘗試通過我們爲現在WEEKDAY只服用星期一:

enter image description here

SELECT SUM(price) as sumofprice, 
     AVG(price) as averageofprice 
FROM order_history 
WHERE WEEKDAY(year + '-' + month + '-' + year) = 0 
     AND product IN ('pepsi','maaza','fruity');