Estou tentando extrair algumas estatísticas de um banco de dados Postgres e fiz esta consulta:
SELECT
city,
job_count,
TO_CHAR(job_count * 100 / SUM(job_count) OVER (), '90D00%') AS job_share
FROM (
SELECT
localities.name as city,
COUNT(*) AS job_count
FROM jobads
JOIN localities ON jobads.locality_uuid = localities.uuid
WHERE jobads.external = true
GROUP BY localities.name
ORDER BY job_count DESC
) AS job_count_table;
Aqui está o resultado que ele retorna:
city | job_count | job_share
-----------------------+-----------+-----------
City #1 | 1300 | 13.00%
City #2 | 700 | 7.00%
City #3 | 400 | 4.00%
...
City #1200 | 1 | 0.01%
(1200 rows)
Ele retorna centenas de linhas e a maioria delas tem uma contagem de empregos muito baixa. Eu gostaria de mesclar todas as linhas com job_count
menos de 100 em uma única linha, para que a saída fosse parecida com esta:
city | job_count | job_share
-----------------------+-----------+-----------
City #1 | 1300 | 13.00%
City #2 | 700 | 7.00%
City #3 | 400 | 4.00%
Other cities | 2000 | 20.00%
(4 rows)
Alguma ideia de como posso fazer isso?