[英]SQL divide subquery within a table
這可能已經回答了,但是我找不到任何指向正確方向的東西。 我將不勝感激任何幫助。
我正在使用一個名為order_items
的表,如下所示:
+----------------------------------------+
| id order_id status |
+----------------------------------------+
| 2014001 1 complete |
| 2014002 1 canceled |
| 2014003 3 complete |
| 2014004 4 canceled |
| 2014005 1 canceled |
| 2014006 1 complete |
| 2014007 2 canceled |
| 2014008 3 complete |
+----------------------------------------+
order_items.id
是主鍵。 我想編寫一個查詢,該查詢將在每個order_id
找到具有complete
狀態的order_items
的百分比,因此結果應該是這樣的:
+----------------------------+
| Percentage order_id |
+----------------------------+
| .5 1 |
| 0 2 |
| 1 3 |
| 0 4 |
+----------------------------+
這是我正在嘗試的代碼,但是沒有用
select
order_items.order_id ,
(select count(order_items.status) from order_items where order_items.status='complete')/ count(order_items.status)
from order_items
GROUP BY order_items.order_id
最簡單的方法是使用條件聚合:
select oi.order_id, avg(oi.status = 'complete')
from order_items oi
group by oi.order_id;
oi.status
返回true,在數字上下文oi.status
其視為1。 您在尋找的所有行的平均值。
嘗試看看是否可行
select
order_items.order_id ,
(select count(order_items.id) from order_items
where order_items.status= 'complete')/ count(order_items.id)
from order_items
GROUP BY order_items.order_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.