簡體   English   中英

Postgres:獲取計數並選擇不同的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM