[英]SQL query to retrive the sum of prices from specific date in a row
我要添加价格,并仅将特定日期的价格平均。
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的产品价格求和并求平均值。 即在该月的所有星期一。
因此,该产品在星期一购买了百事可乐,maaza和果味水果。 价格总和将为34 + 20 + 40 = 94。
平均值是94/3。
这样,我将收集所有的平均价格
我对SQL有基本的了解。 这是我尝试过的查询
SELECT SUM(price)
FROM order_history;
感谢帮助。
您应该做的第一件事是不要使用像这样拆分的日期列,因为使用日期存在很多问题,例如转换和填充。 你应该有一个时间戳工作,但让我们尝试与我们现在使用WEEKDAY只服用星期一:
SELECT SUM(price) as sumofprice,
AVG(price) as averageofprice
FROM order_history
WHERE WEEKDAY(year + '-' + month + '-' + year) = 0
AND product IN ('pepsi','maaza','fruity');
您可以将AVG
聚合函数与WHERE
,例如:
SELECT AVG(price)
FROM order_history
WHERE date IN (01, 08, 15)
AND month = 05
AND year = 2017;
使用IN子句仅包括那些与星期一相对应的date
值:
SELECT SUM(price), AVG(price)
FROM order_history
WHERE month = 5
AND year = 2017
AND date IN (1, 8, 15, 22, 29)
(显然,您也可以根据需要更新month
和year
值)
最后-如果您将整个日期都放在一栏中,则可以轻松地利用WEEKDAY
函数来简化此过程,并使用“ WHERE WEEKDAY(full_date) = 0
(0 = Monday,1 =星期二等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.