在不使用内置COUNT(*)函数的情况下执行COUNT

时间:2013-10-09 00:18:28

标签: sql oracle

如何在不使用内置COUNT函数的情况下根据条件计算表中的字段?有没有办法做到这一点?

要求如下:

创建名为findtotalcarmodels的PL / SQL函数以返回总计 属于特定型号的汽车数量。该功能应该有一个 IN参数为model_name。然后,您应该使用显式游标来计算 属于该车型的汽车数量并返回最终计数。你不能 使用任何隐式游标,表联接,子查询,集合运算符,组函数或SQL 函数(如COUNT)来创建这个函数。

2 个答案:

答案 0 :(得分:2)

SUM(CASE WHEN <condition on your fields> THEN 1 ELSE 0 END)

答案 1 :(得分: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;
/