2014-09-26 93 views
4

我有兩個簡單的select語句,只是想把第一個除以第二個。劃分兩個簡單的select語句

SELECT COUNT (DISTINCT INITIATIVE_ID) 
FROM GPD_ERROR_WARNING_NEW 

SELECT COUNT (DISTINCT SAVINGS_ID) 
FROM GPD_SAVINGS_REGULAR 

第一個SELECT語句的結果300分 第二個SELECT語句的結果大約1500,所以只尋找那神奇的0.2

我知道這是簡單的手工做的,但希望自動化此並使其成爲一個視圖,因爲它需要每小時更新一次。

回答

6

這是可行的,但它「被零除」的錯誤讓你開到:

SELECT 
    (SELECT COUNT (DISTINCT INITIATIVE_ID) FROM GPD_ERROR_WARNING_NEW)/
    (SELECT COUNT (DISTINCT SAVINGS_ID) FROM GPD_SAVINGS_REGULAR) 
FROM DUAL; 

這會給你一個空的結果,而不是一個錯誤,如果第二(分母)計數出來作爲零:

SELECT 
    (SELECT COUNT (DISTINCT INITIATIVE_ID) FROM GPD_ERROR_WARNING_NEW)/
    NULLIF((SELECT COUNT (DISTINCT SAVINGS_ID) FROM GPD_SAVINGS_REGULAR), 0) 
FROM DUAL; 
+2

這將返回'0'在OP的例子中,因爲整數除? – jlars62 2014-09-26 15:07:39

+0

@Dillon Tagle - 另外,值得一提的是,DUAL表是一個Oracle Only構造。對於其他數據庫(如SQL Server),不需要設置FROM語句。 – DanK 2014-09-26 15:08:03

+1

@ jlars62 - no。我想知道同樣的事情,所以我嘗試了它(使用不同的表),我得到了一個「十進制」值。我在Oracle 11上。 – 2014-09-26 15:09:54