2013-10-09 2 views
0

내장 된 COUNT 함수를 사용하지 않고 조건에 따라 테이블의 필드 개수를 계산하려면 어떻게해야합니까? 이것을 할 수있는 방법이 있습니까? 다음과 같이내장 된 COUNT (*) 함수를 사용하지 않고 COUNT 수행

요구 사항은 다음과 같습니다

특정 모델에 속하는 자동차의 총 수를 반환하는 PL/SQL의 기능이라고 findtotalcarmodels을 만듭니다. 이 함수에는 model_name과 같은 IN 매개 변수가 하나 있어야합니다. 그런 다음 명시된 커서를 사용하여 해당 자동차 모델에 속한 대의 차량 수를 계산하고 최종 계수를 반환해야합니다. 암시 적 커서, 테이블 조인, 하위 쿼리, 집합 연산자, 그룹 함수 또는 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)