我在这里遇到了一个非常简单的任务(我认为)。
我有一张看起来像这样的表:
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使结果与众不同。
答案 0 :(得分: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,这将返回每个title,lat和lng的最小值,而不是必须第一个(尽管lat和lng应该是每个geocoder_identifier都相同) - 这取决于你想要如何确定第一个标题。