У меня есть стол заказов
orders (
id int unsigned not null,
fcr_date TIMESTAMP,
completion_date TIMESTAMP,
factory_no varchar(255),
vendor_no varchar(255))
Пожалуйста, игнорируйте опечатки типа данных, если таковые имеются.
Я хочу написать SQL-запрос, который поможет мне отфильтровать данные по фабрике поставщиков. Данные для выборки включают количество заказов на фабрику поставщика (уникальная группа vendor_no, factory_no), vendor_no, factory_no и процент заказов, для которых fcr_date больше, чем sequence_date (так, процент = количество заказов, где fcr_date больше, чем завершение дата / количество заказов). После этого мне нужно отфильтровать данные, где процент больше, чем, скажем, 20%.
Я написал следующий запрос:
SELECT vendor_no As vendor,
factory_no As factory,
COUNT(1) as count,
SUM(CASE WHEN fcr_date > completion_date THEN 1 ELSE 0 END) as filter_orders,
ROUND(filter_orders / count * 100, 4) as percent
FROM @orders
GROUP BY vendor_no,
factory_no
HAVING percent>20
но postgresql жалуется на то, что для фильтрации результатов на основе этого необходимо иметь столбец с именем процентов в таблице. Любая помощь приветствуется.
Спасибо.