Sql 如何修复Postgres错误列不存在?
我对postgress db有以下查询Sql 如何修复Postgres错误列不存在?,sql,postgresql,Sql,Postgresql,我对postgress db有以下查询 SELECT id, address, dblong, dblat, 111* DEGREES(ACOS(COS(RADIANS(latpoint)) * COS(RADIANS(dblat)) * COS(RADIANS(longpoint) - RADIANS(dblong)) +
SELECT id,
address,
dblong,
dblat,
111* DEGREES(ACOS(COS(RADIANS(latpoint)) * COS(RADIANS(dblat)) *
COS(RADIANS(longpoint) - RADIANS(dblong)) +
SIN(RADIANS(latpoint)) * SIN(RADIANS(dblat)))) AS distance_in_km
FROM
(SELECT id,
address,
MAX(longitude) AS dblong,
MAX(latitude) AS dblat
FROM doorbots
WHERE created_at > '%s' AND created_at < '%s'
GROUP BY 1) AS s
JOIN
(SELECT %s AS latpoint, %s AS longpoint) AS p ON 1=1
WHERE distance_in_km < %s
GROUP BY 1;
我不明白如何修复以下错误:
列距离(单位:km)不存在?应该有效:
with q as (
SELECT id,
address,
dblong,
dblat,
111* DEGREES(ACOS(COS(RADIANS(latpoint)) * COS(RADIANS(dblat)) *
COS(RADIANS(longpoint) - RADIANS(dblong)) +
SIN(RADIANS(latpoint)) * SIN(RADIANS(dblat)))) AS distance_in_km
FROM
(SELECT id,
address,
MAX(longitude) AS dblong,
MAX(latitude) AS dblat
FROM doorbots
WHERE created_at > '%s' AND created_at < '%s'
GROUP BY 1) AS s
JOIN
(SELECT %s AS latpoint, %s AS longpoint) AS p ON 1=1
)
select * from q
WHERE distance_in_km < %s
GROUP BY 1;
这应该是可行的:
with q as (
SELECT id,
address,
dblong,
dblat,
111* DEGREES(ACOS(COS(RADIANS(latpoint)) * COS(RADIANS(dblat)) *
COS(RADIANS(longpoint) - RADIANS(dblong)) +
SIN(RADIANS(latpoint)) * SIN(RADIANS(dblat)))) AS distance_in_km
FROM
(SELECT id,
address,
MAX(longitude) AS dblong,
MAX(latitude) AS dblat
FROM doorbots
WHERE created_at > '%s' AND created_at < '%s'
GROUP BY 1) AS s
JOIN
(SELECT %s AS latpoint, %s AS longpoint) AS p ON 1=1
)
select * from q
WHERE distance_in_km < %s
GROUP BY 1;
在where子句中只使用整个公式而不是别名,或者在where子句中只使用整个公式而不是别名,或者在where子句中使用CTE或子查询而不是别名