我有下面的数据库 struct .
id | projectname | number | filename | type | unq | count |
---|---|---|---|---|---|---|
8 | prj1 | 2 | a | t1 | 888389f661e117 | 1 |
9 | prj1 | 2 | a | t1 | 888389f661e117 | 2 |
10 | prj1 | 2 | a | t1 | 888389f661e117 | 2 |
11 | prj1 | 2 | a | t2 | 816418549711c3d33 | 6 |
12 | prj1 | 2 | a | t2 | 816418549711c3d33 | 7 |
13 | prj1 | 2 | a | t2 | 816418549711c3d33 | 1 |
14 | prj1 | 2 | a | t3 | NULL | NULL |
15 | prj1 | 2 | a | t3 | NULL | NULL |
16 | prj1 | 2 | a | t3 | NULL | NULL |
17 | prj1 | 36 | b | t1 | 8dac5bdffc7f86502 | 0 |
18 | prj1 | 36 | b | t1 | 8dac5bdffc7f86502 | 0 |
19 | prj1 | 36 | b | t1 | 8dac5bdffc7f86502 | 0 |
我使用下面的查询得到count
列w.r.t.和type
列的总和.行的唯一标识符是`(projectname、number、filename).
SELECT DISTINCT ON (projectname, number, type) number, type, SUM(count) as count
FROM myTable
GROUP BY (projectname, number, type)
ORDER BY number
这给了我输出
number | type | count |
---|---|---|
2 | t1 | 5 |
2 | t2 | 14 |
2 | t3 | NULL |
36 | t1 | 0 |
36 | t2 | 16 |
36 | t3 | NULL |
我的理想输出是:对于每number
列项目,我想将t2
值除以t1
,将t3
值除以t2
.我可以在不使用外部数据处理技术的情况下使用Postgres命令来实现这一点吗?我希望获得如下表格.type
栏只是我感兴趣的业务的代表.
number | type | ratio |
---|---|---|
2 | t2t1 | 14 by 5 |
2 | t3t2 | NULL by 14 is NULL |
36 | t2t1 | 16 by 0 is INF |
36 | t3t2 | NULL by 16 is NULL |