计算postgres中的重复数字

问题描述 投票:0回答:1

我有快速的问题。

我想计算具有相同数字的行。这就是我得到的:

enter image description here

所以我有4行,相同的数字(59 b)和count column我得到的。我需要得到4而不是1,因为我有4行相同的数字。

这是我的sql

SELECT (z.miasto ||' '|| z.ulica ||' '|| z.nr_dom) as adres, (z.sym ||z.sym_ul||' '|| z.nr_dom) as symbol, zd.status, zd.id_administrator, z.uwagi,
COUNT(*) as liczba_osob
FROM zgloszenia as z
LEFT JOIN zgl_dzialamy AS zd ON (z.sym ||z.sym_ul||' '|| z.nr_dom) = (zd.sym ||zd.sym_ul||' '|| zd.nr_budynku)
WHERE status < 5
group by adres, symbol, zd.id_administrator, z.uwagi, zd.status

谁能告诉我我做错了什么?

count postgresql-9.1
1个回答
0
投票

COUNT不起作用的原因是因为分组值无法聚合。它们似乎彼此不同(可能是黑色的值:z.uwagi)。

您可以做的是一起选择非DISTINCT值并改为COUNT。 COUNTing完成后,您可以将此VALUE加入到您的表中。或者,您可以将此列聚合到表中作为数组或json对象。

SELECT 
  (z.miasto ||' '|| z.ulica ||' '|| z.nr_dom) as adres,
  (z.sym ||z.sym_ul||' '|| z.nr_dom) as symbol,
  zd.status,
  zd.id_administrator,
  -- z.uwagi, -- VALUE IS DISTINCT
  COUNT(*) as liczba_osob
  FROM zgloszenia as z
    LEFT JOIN zgl_dzialamy AS zd ON (z.sym ||z.sym_ul||' '|| z.nr_dom) = (zd.sym ||zd.sym_ul||' '|| zd.nr_budynku)
  WHERE status < 5
  group by
    adres,
    symbol,
    zd.id_administrator,
    -- z.uwagi,
    zd.status
© www.soinside.com 2019 - 2024. All rights reserved.