postgreSQL - 如果有条件,如何返回失败订单的数量?



所以,我有两个表——表客户和表订单。customer with attributes custid, name, addressorders with attributes customerid, orderid, date and status.我需要返回那些客户的 ID,这些客户的订单中有超过 15% 的状态为"失败"。

这是我写的,目前不起作用:

SELECT C.custid
FROM customers C
WHERE C.custid IN (SELECT O.customerid, COUNT(status)
FROM orders O
WHERE O.status='failed'
GROUP BY O.custid
HAVING COUNT(status)=0.15)

下面是在orders表上使用聚合的一种方法:

SELECT customterid
FROM orders
GROUP BY customerid
HAVING COUNT(CASE WHEN status = 'failed' THEN 1 END) / COUNT(*) > 0.15;

最新更新