1

我在这里遇到了一个非常简单的任务(我认为)。

我有一个看起来像这样的表:

SELECT
        title, lat, lng, geocoder_identifier
    FROM entries
    WHERE geocoder_identifier IS NOT NULL;

条目表

如果用户选择与另一个具有相同 lat/lng 的地方,则 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 使结果不同。

4

1 回答 1

0

最简单的方法是:

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的最小值,不一定是第一个(尽管 lat 和 lng 在每个 geocoder_identifier 中应该相同) - 这取决于您要如何确定第一个标题.

于 2013-04-10T10:40:40.927 回答