我有一个查询,它按日期和名称分组并计算该组的行数。
下面是我按阶段分组获取的数据。
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
答案 0 :(得分:2)
您可以使用:
SELECT *,
100.0 * (count - LAG(count, 1,0) OVER(PARTITION BY name ORDER BY day))/cnt AS result
FROM tab;