我需要计算每行第1年记录的每日平均值。 我可以通过迭代while循环来做到这一点,但我确信我可以实现这个更简单。我可能需要一个查询来计算Amount字段附近的avgAmount。
平均值的计算方法是将金额相加并除以每行的最小和最大日期之差。
create table a
(
date datetime,
dept varchar(50),
amount float
)
insert into a values ('2016-02-07', 'abc', 25)
insert into a values ('2016-02-27', 'abc', 20)
insert into a values ('2016-03-09', 'abc', 30)
insert into a values ('2016-03-28', 'abc', 45)
insert into a values ('2016-04-07', 'abc', 40)
insert into a values ('2016-04-30', 'abc', 50)
insert into a values ('2016-05-07', 'abc', 60)
insert into a values ('2016-05-27', 'abc', 50)
insert into a values ('2016-06-30', 'abc', 38)
insert into a values ('2016-07-17', 'abc', 45)
insert into a values ('2016-07-30', 'abc', 55)
insert into a values ('2016-08-07', 'abc', 70)
请帮忙吗?
答案 0 :(得分:2)
一种方法是:
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'add': {
'products': // dataLayerProducts, one object per product
},
}
});
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': // dataLayerProducts, one object per product
}
}
});
答案 1 :(得分:1)
试试这个:
with FirstCalc as
(
select dept, min(date) as MinDate, max(date) as MaxDate, sum(amount) as TotalAmount
from a
group by dept
)
select dept, TotalAmount/datediff(dd, MinDate, MaxDate) as AvePerDay
from FirstCalc
答案 2 :(得分:1)
如果是SQL Server:
Select Sum(a.amount) / datediff(day, start.Date, end.Date)
From a
join a start
on start.Date = (Select Min(Date) from a
Where Year(date) = @Year
and dept = a.Dept)
join a end
on end.Date = (Select Max(Date) from a
Where Year(date) = @Year
and dept = a.Dept)
Where Year(a.Date) = @year