2011-11-16 180 views
0

我有一个包含以下信息聚合函数

date    sales 
2011-02-13  1 
2011-02-13  3 
2011-02-13  2 
2011-02-14  1 
2011-02-14  5 
2011-02-14  8 
2011-02-15  2 
etc ... 

我怎么知道什么是周期平均量的表? 比如我要得到这样一个结果: 销售2,4为每天期间2011-02-11 - 2011-02-15

+1

你从哪儿弄来2,4? – SAN

回答

1
select avg(sales) from table where date <= x and date >= y 

您的X和Y的日期如

select avg(sales) from table where date <= '2011-02-15' and date >= '2011-02-11' 
+0

'where'首先筛选您感兴趣的行,然后avg(这是一个聚合函数)将计算剩余集合的一个结果。 – Jerome

+2

但问题是,你认为每天有一行不是这种情况。我认为有一个额外的groupby和可能需要的总和,但不知道具体到底是多少。 – Flo

+0

的确我假设每天有一行。我不认为这是一个好的设计,每个日期有多行,日期应该至少是一致性的关键。 – Jerome

1

如果`date`DATE数据类型:

SELECT SUM(sales)/(1 + DATEDIFF('2011-02-15', '2011-02-11')) 
     AS AverageSalesPerDay 
FROM TableX 
WHERE `date` BETWEEN '2011-02-11' 
       AND '2011-02-15' 

如果是DATETIMETIMESTAMP

SELECT SUM(sales)/(DATEDIFF('2011-02-16', '2011-02-11')) 
     AS AverageSalesPerDay 
FROM TableX 
WHERE `date` >= '2011-02-11' 
    AND `date` < '2011-02-16'