我的桌子下面有pk&销售专栏。
尝试计算第3列(销售额/(销售额总和)) 即100 / 1000,50 / 1000等......
pk | sales
----+-------
1 | 100
2 | 50
3 | 250
4 | 100
5 | 500
在vertica中是可以的。
我使用以下查询尝试了累计金额。
select pk,sales,
sum(sales) over (order by pk) cumulative_sum
from sum_test
order by pk;
请建议..
答案 0 :(得分:2)
我不知道Vertica。在标准SQL中,表达式sum(sales) over (order by pk)
为您提供给定订单的运行总计。要获取所有行的总和,您需要删除order by子句:sum(sales) over ()
。
select
pk,
sales,
sum(sales) over () as total,
sales / sum(sales) over () as percentage
from sum_test
order by pk;
答案 1 :(得分:0)
在你的窗口子句中放置一个ORDER BY将导致默认框架在无限制的预先行和当前行之间。
将窗口子句保留为空白将为您提供所需行的总和:
In [19]:
df['PID'] = df['PID'].apply(lambda x: [x for x in x if x != '.'])
df
Out[19]:
PID
1311 [5185, 5398, 5467, 5576]