我在嘗試微調查詢並希望得到一些反饋。我有一個job_fact
倉庫表,其中包含該工作的最終事件的計量單位(final_event_type
)。我試圖對這個事實進行查詢,這會給我一個成功/失敗的比例。這是我到目前爲止有:從倉庫事實表中獲取成功/失敗比率的最佳查詢
SELECT
CASE WHEN jf.final_event_type IN (4,6,8,9) THEN count(final_event_type) END as num_failures,
CASE WHEN jf.final_event_type IN (5,7,10) THEN count(final_event_type) END as num_successes
FROM job_fact jf
GROUP BY jf.final_event_type;
這個查詢只給我兩行的結果生更迭和失敗值:
+----------------------+-----------------------+
| num_failures | num_successes |
+----------------------+-----------------------+
| [NULL] | 6 |
| 14 | [NULL] |
+----------------------+-----------------------+
有誰知道,如果有一種方法來一個)獲得一條線上的結果,以及b)能夠計算兩者之間的比率(例如,失敗百分比)。我假設有人會告訴我,我最好爲此編寫一個程序,但如果可能的話,我想避免它。我知道有一個很好的方法可以做到這一點,但我猜我今天缺乏sql-foo。
我正在運行PostgreSQL 9.0.1。感謝您提供的任何幫助。
UPDATE
基於關閉所選擇的答案(來自@Ronnis),這裏是我的最後的查詢,如果你想知道:
select
sum(case when final_event_type in(4,6,8,9) then 1 else 0 end) as failures,
sum(case when final_event_type in(5,7,10) then 1 else 0 end) as successes,
count(final_event_type) as total_events,
sum(case when final_event_type in(4,6,8,9) then 1 else 0 end)/count(final_event_type)::decimal as failure_percentage,
sum(case when final_event_type in(5,7,10) then 1 else 0 end)/count(final_event_type)::decimal as success_percentage
from job_fact;
該查詢的原始運行無效......您能解釋一下您的意思嗎? – localshred 2011-02-18 15:02:18
您必須刪除引號,否則查詢將失敗。也許你應該把Total結果轉換爲DECIMAL,否則num_failures/Total將被舍入。 – 2011-02-18 15:04:08