2016-11-24 70 views
2

我在我的表中有像下面的數據。 (我的表格中有很多其他列)如何獲得一個列值取決於另一個

project_id | done_ratio 
1510 ------------ 100 
1510 ------------ 100 
1510 ------------ 100 
1511 ------------ 80 
1511 ------------ 90 
1511 ------------ 0 
1512 ------------ 0 
1512 ------------ 0 

我想寫的查詢是獲取狀態取決於done_ratio如下。對於PROJECT_ID 1510
狀態完成因爲全部完成比率爲100
爲PROJECT_ID 1511狀態工作因爲全部完成比率不是100和0
爲PROJECT_ID 1512狀態爲not_start因爲全部完成比例爲0.
任何人都可以解釋我嗎?

回答

4
select project_id, 
     case when avg(done_ratio) = 100 then 'done' 
      when avg(done_ratio) > 0 then 'working' 
      else 'not_start' 
     end as status 
from your_table 
group by project_id 
+0

謝謝您的回答。但我想要做的是獲取狀態取決於具體項目的所有done_ratio。舉個例子,一個有(100,90,20)done_ratio的項目,即使有100個,也會顯示工作沒有完成。 抱歉我的英文不好。 –

+1

然後用'avg()'代替 –

+0

是的,我明白了。 avg()解決了這個問題。非常感謝@juergen d。 –

0

可以使用CASE statement爲:

SELECT 
CASE WHEN done_ratio == 100 THEN 'done' 
    WHEN done_ratio == 0 THEN 'not_start' 
    ELSE 'working' 
FROM tbl 
相關問題