2013-10-09 102 views
0

如何在不使用內置COUNT函數的情況下根據條件計算表中的字段?有沒有辦法做到這一點?在不使用內置COUNT(*)函數的情況下執行COUNT

要求如下:

創建一個PL/SQL函數調用findtotalcarmodels要返回的總人數 屬於一個特定的汽車模型。該函數應該有一個單獨的 IN參數作爲model_name。然後,您應該使用明確的光標來計算屬於該車型的汽車數量並返回最終計數。您不得使用任何隱式遊標,表連接,子查詢,集合運算符,組函數或SQL函數(例如COUNT)來創建此函數。

+1

'SUM(1)',任何人? – dasblinkenlight

+1

'DCOUNT'需要更多的愛 – SheetJS

+0

對於Oracle SQL? – Splunk

回答

1

這可能是我寫的最愚蠢的答案。行業中沒有人像這樣工作。

這裏去了答案:

CREATE OR REPLACE FUNCTION findtotalcarmodels 
(model_name IN VARCHAR2) 
IS 
    CURSOR mycur IS 
     SELECT model_name_col FROM car_table; 
    mycount INTEGER := 0; 
    current_model_name VARCHAR2(10); 
BEGIN 
    OPEN mycur; 
    FETCH mycur INTO current_model_name; 
    WHILE mycur%FOUND LOOP 
     IF current_model_name = model_name THEN 
      mycount := mycount + 1; 
     END IF; 
     FETCH mycur INTO current_model_name; 
    END LOOP; 
    CLOSE mycur; 
    dbms_output.put_line('The count is ' || mycount); 
END; 
/
2
SUM(CASE WHEN <condition on your fields> THEN 1 ELSE 0 END) 
相關問題