GROUP BY
s довольно сложно.Поскольку вас интересует только COUNT, я бы сократил запрос, чтобы избавиться от всех параметров, которые вы не собираетесь использовать.И если вы подумаете об этом, если вы группируете по flight_date, что БД должна возвращать для некоторых других полей - например, health_start_date?Он не знает, что делать, поэтому выдает ошибку.
Начните с этой урезанной версии.Я не уверен, если предложение WHERE вызовет проблемы или нет.Возможно, вам придется использовать псевдоним GROUP BY flight_date вместо «public» .flight.flight_date.И вам определенно придется указывать псевдоним GROUP BY, если "public".flight.flight_date
является меткой времени.В зависимости от размера этих таблиц преобразование to_char может быть медленным.Использование date("public".flight.flight_date
может быть быстрее.
SELECT to_char("public".flight.flight_date, 'DDMMYY') as "flight date",
COUNT(*) AS TOTALDOWNLOAD, "public".aircraft.register_number
FROM "public".flight
INNER JOIN "public".aircraft ON
"public".flight.aircraft_id = "public".aircraft.id
WHERE "public".flight.maintenance_flight_time > 0
GROUP BY "flight date", "public".aircraft.register_number
ORDER BY "flight date"