我有一个运行良好的代码-仅按电话使用日期
。select date,
data,
SUM(data) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) data_30,
texts,
SUM(tests) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) text_30,
voice,
SUM(voice) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) voice_30,
wifi,
SUM(wifi)
OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) wifi_30
FROM Table
我只是想知道如何使用前30天的总和,但是是否有可能再加上第二个变量,例如,我想查看日期,并按费率计划使用这些用法?
类似
select date,
plan, b, c, d,
data,
SUM(data) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) data_30,
texts,
SUM(tests) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) text_30,
voice,
SUM(voice) OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) voice_30,
wifi,
SUM(wifi)
OVER (ORDER BY date asc
ROWS between 30 PRECEDING and current row) wifi_30
FROM Table
group by date, plan, b, c, d
公正日期的结果
date usage last30sum
1/1 1 1
1/2 1 2
....
1/20 1 30
如果我的源数据为
date line rateplan usage
1/1 phone1 10gbplan 1
1/1 phone2 unlimited 2
1/2 phone3 10gbplan 1
....
1/30 phone200 10gbplan 1
我想看看整理
date plan totalusage rolling_30
1/2 10gbplan 1 4+ sum(28 days before 1/2)
能否按日期将其分组,以获取最近的30天,即a,b,c仅表示其他分组依据,可能类似于设备型号或区域。
答案 0 :(得分:1)
我通过添加分区来弄清楚
select date,
plan, b, c, d,
data,
SUM(data) OVER (partition by plan, b, c, d
ORDER BY date asc
ROWS between 30 PRECEDING and current row) data_30,
texts,
SUM(tests) OVER (partition by plan, b, c, d
ORDER BY date asc
ROWS between 30 PRECEDING and current row) text_30,
voice,
SUM(voice) OVER (partition by plan, b, c, d
ORDER BY date asc
ROWS between 30 PRECEDING and current row) voice_30,
wifi,
SUM(wifi)
OVER (partition by plan, b, c, d
ORDER BY date asc
ROWS between 30 PRECEDING and current row) wifi_30
FROM Table