如何从按计算计算的数量中获得运行总计?
select Hour, count(*) TotalPerHOur, sum(TotalPerHOur) TotalCumulative
from table1
group by Year, Month, Day, Hour
这是我的查询 - 但不起作用...... 我得到的错误是
无效的列TotalPerHOur
结果表的示例
HOUR Total_per_Hour Total Cumulative
6:00-7:00 8 8
7:00-8:00 13 21
8:00-9:00 20 41
9:00-10:00 22 63
10:00-11:00 10 73
11:00-12:00 23 96
答案 0 :(得分:0)
您收到此错误是因为尚未定义TotalPerHOur
。并且您正在使用它来计算TotalCumulative
。
以下查询应该有效:
SELECT
Hour,
TotalPerHOur,
sum(TotalPerHOur) TotalCumulative
FROM (
SELECT
Hour,
count(*) TotalPerHOur
FROM
table1
GROUP BY
Year,
Month,
Day,
Hour
)
答案 1 :(得分:0)
尝试这样的事情:
SELECT t1.Hour, count(*) TotalPerHOur, (
SELECT count(*)
FROM table1 t2
WHERE t2.Year <= t1.Year and t2.Month <= t1.Month and t2.Day <= t1.Day and t2.Hour <= t1.Hour
) TotalCumulative
FROM table1 t1
GROUP BY t1.Year, t1.Month, t1.Day, t1.Hour
答案 2 :(得分:0)
以下查询将生成运行总计;
WITH Base AS
(
SELECT ROW_NUMBER() OVER (ORDER BY Year, Month, Day, Hour) RowNum,
Year, Month, Day, Hour, count(*) as CountPerHour, sum(Total) as TotalPerHour FROM table1 group by Year, Month, Day, Hour
)
select T1.Year, T1.Month, T1.Day, T1.Hour, T1.CountPerHour, sum(T2.TotalPerHour) from BASE as T1
join BASE as T2 on T2.RowNum <= T1.RowNum
Group by T1.Year, T1.Month, T1.Day, T1.Hour, T1.CountPerHour
答案 3 :(得分:0)
通常,数据库应优化此查询,因此计算两次不应该是一个问题:
select Hour, count(*) TotalPerHOur, sum(count(*)) TotalCumulative
from table1
group by Year, Month, Day, Hour