簡體   English   中英

Postgres SQL如何使用group by並在其中排除order by子句

[英]Postgres SQL How can I use group by and exclude the order by clause in it

我創建了一個類似的帖子,認為我有答案,但是我沒有。 我想做的是在給定位置欄與眾不同的情況下,根據給定的緯度和經度來獲取最近的城市/城鎮。 如果您在下面的屏幕快照中看到兩次彈出了Orlando的位置,那么我想使該列與眾不同,以便它可以忽略第2條Orlando記錄。 給定(28.458414,-81.395258)的點,我正確地獲得了最近的城市/城鎮。 問題是,我有許多大城市的記錄,這些大城市在同一城市中具有不同的坐標,如果您看到我對奧蘭多2條記錄的坐標略有不同。 任何建議都很好。 我正在使用postgres 10

SELECT location,ABS(28.458414 - latitudes) + ABS(-81.395258-longitudes) as distance FROM zips 
 group by location,latitudes,longitudes
 ORDER BY distance asc limit 5

我也做過

SELECT distinct location, ABS(28.458414 - latitudes) + ABS(-81.395258-longitudes) as distance FROM zips 
 ORDER BY distance asc limit 5

這用於向用戶顯示城鎮附近的選項,並且兩次顯示2個城鎮似乎是錯誤的。

在此處輸入圖片說明

不知道您要忽略什么奧蘭多第二紀錄。 如果有一個ID列指示行的順序,則可以使用row_number()DISTINCT ON獲得最高或最低。 您可以嘗試使用MINMAX ,從group by刪除經度和緯度

SELECT location,MIN(distance) as distance
FROM
(
  SELECT location, ABS(28.458414 - latitudes) + ABS(-81.395258 -longitudes )
   as distance FROM zips 
 ) group by location
 ORDER BY distance asc limit 5;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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