Postgres 错误 [列必须出现在 GROUP BY 子句中或在聚合函数中使用]

Postgres error [column must appear in the GROUP BY clause or be used in an aggregate function]

我想查询 distinct 和计数:

SELECT DISTINCT way.vehicle, count(way.vehicle), way.id, way.created_at, way.updated_at, way.version 
from waypoints as way 
left join dtb_vehicle on way.vehicle = dtb_vehicle.vehicle  
where (6373 * acos (cos ( radians(21.0277644)) * cos ( radians (way.latitude)) * cos (radians (way.longitude) - radians (105.8341598)) + sin (radians (21.0277644)) * sin (radians (way.latitude)))) < 20 
AND dtb_vehicle.vehicle_type = 600 
GROUP BY way.vehicle 
HAVING count(way.vehicle) > 10

但总是报错:column "way.id" must appear in the GROUP BY clause or be used in an aggregate function.

请帮帮我。谢谢

这只是您将遇到的四个错误中的第一个。一旦遇到错误,PostreSQL 就会停止检查您的 SQL,因此这并不意味着只有一个。事实上,您对所有 id、created_at、updated_at 和版本都有同样的问题。正如错误所说,如果您正在使用 GROUP BY,那么 SELECT 语句中的所有列都必须在 GROUP BY 子句中,或者需要对它们使用某种聚合函数。假设您不想将它们添加到 GROUP BY(基于什么都不会有 COUNT > 10),那么您要么必须将它们从 SELECT 中删除,要么应用一些聚合函数。在你的情况下 MAX 可能是合适的,但在不了解更多的情况下我真的不能说。