如果可能,如何在配置单元SQL的各个阶段中获取百分比差异?

时间:2019-05-13 07:23:07

标签: sql hive hiveql

我有一个查询,它按日期和名称分组并计算该组的行数。

下面是我按阶段分组获取的数据。

name  day           count
A     2019-01-01    120
A     2019-01-02    127
B     2019-01-01    756
B     2019-01-02    125
C     2019-01-02    102
D     2019-01-01    57

我想找出每天姓名数量的百分比差异。

是否可以在查询本身中实现此目的,并将百分比和名称作为查询输出发送?

即 (((今天的计数-前一天的计数)/今天的计数)* 100

A = ((127 - 120) / 127)*100 = 5.51%
B = ((125 - 756) / 125)*100 = -504.8%
C = ( (102 - 0) / 102)*100 = 100%
D = check divide by zero --> if true = 100%

预期输出:

A, 5.51
B, -504.8
C, 100
D, 100

1 个答案:

答案 0 :(得分:2)

您可以使用:

SELECT *, 
  100.0 * (count - LAG(count, 1,0) OVER(PARTITION BY name ORDER BY day))/cnt AS result
FROM tab;

db<>fiddle demo