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

在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 1

我想计算两个板条之间的距离,并显示该值。 我还想使用该值(四舍五入到最接近的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;

现在我必须弄清楚如何更改活动记录调用的from子句。