【发布时间】:2021-07-26 09:08:26
【问题描述】:
数据如下:
| road_id | count | centimeters |
|---|---|---|
| road111 | 123 | 502 |
| road123 | 345 | 234 |
| road124 | 3256 | 23498 |
我的目标是计算“量公里流量”,计算每行的百分比,按计数排序,并计算累积总和。我知道如何在 R 中做到这一点,但很难在 SQL 中重现。
为了实现这一点,我在 R 中的代码是(它可以正常工作):
data_perc <- data %>%
mutate(kilometers = centimeters/100000) %>%
mutate(vkt = count*kilometers) %>%
mutate(vktperc = vkt/sum(vkt)) %>%
arrange(desc(count)) %>%
mutate(vktcumsum = cumsum(vktperc))
在 SQL 中,我尝试了这个但出现了错误:
select road_id, count, geom, centimeters/100000 as kilometers, cap1.y as vkt, cap2.z as vktperc, sum(vktperc) as vktcumsum
from roaddata rd1
inner join roaddata rd2 on rd1.road_id >= rd2.road_id
cross apply (select count*kilometers as product) cap1(y)
cross apply (select (vkt/sum(vkt))*100 as percentage) cap2(z)
group by road_id, count
order by count desc;
【问题讨论】:
-
编辑您的问题并显示您想要的结果。例如,你想要什么累积总和?你要的百分比是多少?还要标记您正在使用的数据库..
标签: sql cumulative-sum