我有一个订单表。
+----------+--------+---------+
| order_id | city | status |
+----------+--------+---------+
| 1 | NYC | success |
| 2 | London | failure |
| 3 | Tokyo | success |
| 4 | NYC | failure |
| 5 | London | failure |
| 6 | Tokyo | success |
| 7 | NYC | success |
| 8 | London | failure |
| 9 | Tokyo | success |
| 10 | NYC | failure |
+----------+--------+---------+
我想编写一个查询以根据其失败率按升序列出所有城市。
城市失败率=(城市失败订单)*100/(城市订单总数)
上表的查询输出应为:
+--------+--------------+
| city | failure_rate |
+--------+--------------+
| Tokyo | 0 |
| NYC | 50 |
| London | 100 |
+--------+--------------+
现在,作为一个菜鸟,我只能编写查询来获取按城市分组的失败订单数和按城市分组的总订单数,如下所示:
select city, count(order_id) as failed
from orders
where status='failure'
group by city
order by failed asc;
和
select city, count(order_id) as total
from orders
group by city
order by total asc;
但我无法编写查询以获得所需的结果。