簡體   English   中英

SQL在表中划分子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM