【发布时间】:2010-01-21 22:25:41
【问题描述】:
我有一个餐桌订单
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 大于 completion_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 抱怨它需要在 table 中有一个名为 percent 的列来根据它过滤结果。任何帮助表示赞赏。
谢谢。
【问题讨论】:
标签: sql postgresql