在列上打破,在postgres中计算总和

时间:2015-07-30 20:07:53

标签: postgresql

我正在尝试将SQL查询转换为Postgres,我正在努力做到以下,

示例:

首次查询我的下一个查询结果:select sourcename, type, count(type), sum(size) from table;

 sourcename |                      Type                       | count |   sum
------------+-----------------------------------------------------+-------+----------
 A          | TYPE1                                           |    21 | 10485378
 B          | TYPE1                                           |    12 |  5241177
 C          | TYPE1                                           |    12 |  5242254
 D          | TYPE1                                           |    12 |  5570560
 A          | TYPE2                                           |    11 |  5239645
 B          | TYPE2                                           |    12 |  5570560
 C          | TYPE2                                           |    12 |  5241862
 D          | TYPE2                                           |    11 |  5570560

输出我需要:

 sourcename |                      Type                       | count |   sum
------------+-----------------------------------------------------+-------+----------
 A          | TYPE1                                           |    21 | 10485378
            | TYPE2                                           |    12 |  5241177
TOTAL       |                                                 |    33 | sum(values above)

 B          | TYPE1                                           |    12 |  5242254
            | TYPE2                                           |    12 |  5570560
TOTAL       |                                                 |    24 | sum(values above)

 C          | TYPE1                                           |    11 |  5239645
            | TYPE2                                           |    12 |  5570560
TOTAL       |                                                 |    23 | sum(values above)

 D          | TYPE1                                           |    12 |  5241862
            | TYPE2                                           |    11 |  5570560
TOTAL       |                                                 |    23 | sum(values above)

注意:我使用WITH AS来获取总数,但是在每个源名称之间显示它们,即A,B,C,D是我无法做到的事情,我也无法抑制A显示两次在结果中,就像在oracle中它在sourcename上的中断,但是有一个postgres等价吗?列上的计算总和是在oracle中,我找不到postgres等价物。我终于找到了一种方法,使用shell和psql来获得下面所需的结果,但我需要知道是否有更好的方法来执行此操作而不使用它们之间的shell。任何帮助深表感谢。我正在使用psql 9.1.3

我是这个论坛的新手,所以如果你看到我的表格结果不符合查看情况,请告诉我,我会尝试将其设置正确。

(使用PostgreSQL 9.1)

0 个答案:

没有答案