繁体   English   中英

SQL查询可连续检索特定日期的价格总和

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

(显然,您也可以根据需要更新monthyear值)

最后-如果您将整个日期都放在一栏中,则可以轻松地利用WEEKDAY函数来简化此过程,并使用“ WHERE WEEKDAY(full_date) = 0 (0 = Monday,1 =星期二等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM