postgresql - 在 postgresql 查询中的两个位置使用计算值

标签 postgresql

我想计算两个经纬度之间的距离,并显示该值。 我也想使用那个值(四舍五入到最近的 KM)

注意:人为的例子

这是我的

SELECT  
ST_Distance(
   ST_GeogFromText(
     'SRID=4326;POINT(' || longitude || ' ' || latitude || ')'
   ),
   ST_GeogFromText('SRID=4326;POINT(1 1)')
 ) AS distance, id from locations limit 10

现在这个工作得很好..我得到以米为单位的距离

但是我想得到以米和公里为单位的距离(这个问题很简单)

这是我认为可行的

SELECT  
ST_Distance(
   ST_GeogFromText(
     'SRID=4326;POINT(' || longitude || ' ' || latitude || ')'
   ),
   ST_GeogFromText('SRID=4326;POINT(1 1)')
 ) AS distance, distance/1000 as distance_in_km, id from locations limit 10

这会返回一个错误..
列“距离”不存在
它的箭头指向查询中的第二个“距离”。

我真正想避免的是同时计算全值和四舍五入到 KM

请注意:这不是实际的查询,而是为呈现问题而设计的查询。

最佳答案

试试这个:-

SELECT distance, distance/1000 as distance_in_km from 
(
    SELECT  
        ST_Distance(
            ST_GeogFromText(
            'SRID=4326;POINT(' || longitude || ' ' || latitude || ')'
        ),
        ST_GeogFromText('SRID=4326;POINT(1 1)')
    ) AS distance, id from locations limit 10
) t;

关于postgresql - 在 postgresql 查询中的两个位置使用计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24796120/

相关文章:

sql - 每个 DISTINCT 的多个 ORDER BY 和 LIMIT

ruby-on-rails - 安装pg(0.15.1)时出错,Bundler无法继续

sql - SQL输出中的简单单词替换

php - 日期与 Doctrine2 和 Symfony2 的交集

mysql - 数据库设计模型客户、厨师、用户关系

postgresql - 从线的左侧和右侧查找多边形

ruby - ActiveRecord 批量? after_commit 产生 O(n) 的麻烦

java - PostgreSQL 相当于 Java 中的 oracle.sql.BLOB

sql - postgreSQL ORDER BY 文本以 10 而不是 1 开头

postgresql - SqlAlchemy:使用 `get or create` 模式锁定表