在 postgresql 中使用分组查询和计数
query with group by and count in postgresql
我的查询:
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;
returns 这个结果:
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"。在上面的 return 数据中,只有 "POSIZIONE" 265 有两个 "TRANSAZIONE" 。我只想提取 265 "POSIZIONE".
我不确定你问题的含义。
您需要简单地添加一个 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;
这将 return
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)
和 having
关键字来稍微重构您的查询:
select id_posizione as posizione, Count(distinct IDENTIFICATIVO_TRANSAZIONE) as count_transazioni
from GP_TRANSAZIONI
group by id_posizione
having Count(distinct IDENTIFICATIVO_TRANSAZIONE)>1
order by id_posizione;
哪个return
265 2
我的查询:
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;
returns 这个结果:
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"。在上面的 return 数据中,只有 "POSIZIONE" 265 有两个 "TRANSAZIONE" 。我只想提取 265 "POSIZIONE".
我不确定你问题的含义。
您需要简单地添加一个 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;
这将 return
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)
和 having
关键字来稍微重构您的查询:
select id_posizione as posizione, Count(distinct IDENTIFICATIVO_TRANSAZIONE) as count_transazioni
from GP_TRANSAZIONI
group by id_posizione
having Count(distinct IDENTIFICATIVO_TRANSAZIONE)>1
order by id_posizione;
哪个return
265 2