[英]Postgres: Get count & select distinct
我在這里碰到了一個非常簡單的任務(我認為)。
我有一張桌子,看起來像這樣:
SELECT
title, lat, lng, geocoder_identifier
FROM entries
WHERE geocoder_identifier IS NOT NULL;
如果用戶選擇一個位置與另一個位置相同的緯度,則兩個條目的geocoder_identifier字段相同。 我需要做的是使用相同的geocoder_identifier將任何行組合在一起,獲取該組中有多少行的計數,然后返回該組中第一行的詳細信息,並丟棄其他行。
到目前為止,我最接近完成此操作的是:
SELECT DISTINCT
(geocoder_identifier), title, lat, lng, entry_count
FROM (
SELECT
title,description, lat, lng, geocoder_identifier, COUNT(*) OVER (PARTITION BY geocoder_identifier) AS entry_count
FROM entries
WHERE geocoder_identifier IS NOT NULL) AS e
ORDER BY e.entry_count DESC;
這將為我生成以下數據集:
這里的問題是我無法真正弄清楚如何通過其geocoder_identifiers區分結果。
最簡單的方法是:
SELECT min(title), min(lat), min(lng), geocoder_identifier, count(*)
FROM entries
WHERE geocoder_identifier IS NOT NULL
group by geocoder_identifier
order by 5 desc
請注意,這將為每個給定的geocoder_identifier返回每個標題,lat和lng的最小值 , 不一定返回第一個(盡管在整個geocoder_identifier中lat和lng應該相同)-這取決於您要如何確定第一個標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.