用group by查询并在PostgreSQL中计数

时间:2018-09-06 16:06:59

标签: postgresql-9.3

我的查询:

select id_posizione as posizione, IDENTIFICATIVO_TRANSAZIONE as transazione, Count(IDENTIFICATIVO_TRANSAZIONE) as count_transazioni
from  GP_TRANSAZIONI
group by id_posizione, IDENTIFICATIVO_TRANSAZIONE order by id_posizione;

返回此结果:

POSIZIONE       TRANSAZIONE                             COUNT_TRANSAZIONI
264             35afec5d-a71e-56f6-94d9-vf111b7f7f27    3
265             51afec5d-c71e-46f6-94d9-fb221b7f7e65    1
265             69b04d6d-ef58-417c-b070-2d2c2da778ff    2
266             51afec5d-c71e-46f6-94d9-fb221b7f7e66    3
267             98c6fa08-7c85-49e6-9c1e-52bdd80c6bb2    7
268             146f9355-13f1-4fb2-a2e6-b55588e312fd    4
269             3a85ff57-54bf-4b0d-b2fd-3f69aa239467    3
270             03899fe7-607b-457f-bcfb-570c1511b33a    4
271             47ffb07b-b410-4591-ad89-f8b820ba0a85    2

我只想提取带有不同“ TRANSAZIONE”的“ POSIZIONE”。在上面的返回数据中,仅“ POSIZIONE” 265具有两个“ TRANSAZIONE”。我只想提取265个“ POSIZIONE”。

1 个答案:

答案 0 :(得分:0)

我不确定您问题的含义。 您只需添加一个constructor即可对聚合列进行过滤:

getTodos(): Observable<Todos[]> {
   return this.http.get<Todos[]>('http://localhost:8888/api/todos');
}

这将返回

having

或者您需要通过添加select id_posizione as posizione, IDENTIFICATIVO_TRANSAZIONE as transazione, Count(IDENTIFICATIVO_TRANSAZIONE) as count_transazioni from GP_TRANSAZIONI group by id_posizione, IDENTIFICATIVO_TRANSAZIONE having Count(IDENTIFICATIVO_TRANSAZIONE)>1 order by id_posizione; 264 35afec5d-a71e-56f6-94d9-vf111b7f7f27 3 265 69b04d6d-ef58-417c-b070-2d2c2da778ff 2 266 51afec5d-c71e-46f6-94d9-fb221b7f7e66 3 267 98c6fa08-7c85-49e6-9c1e-52bdd80c6bb2 7 268 146f9355-13f1-4fb2-a2e6-b55588e312fd 4 269 3a85ff57-54bf-4b0d-b2fd-3f69aa239467 3 270 03899fe7-607b-457f-bcfb-570c1511b33a 4 271 47ffb07b-b410-4591-ad89-f8b820ba0a85 2 这样的关键字来重构查询:

count(distinct xxx)

返回

265 2