所以,我有两个表——表客户和表订单。customer with attributes custid, name, address
和orders 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;