Oracle/PLSQL에서 NULL 값만 계산하려면 어떻게 해야 합니까?
Oracle/PLSQL에서 NULL 값만 계산하려면 어떻게 해야 합니까?
null 값만 세고 싶습니다.그렇게 하는 기능이 있습니까?
오라클은 자세히 모르지만 ANSI SQL은COUNT(rowName)
계산 안 함NULL
값들, 그러나COUNT(*)
그래요. 그래서 당신은 글을 쓸 수 있습니다.
SELECT COUNT(*) FROM YourTable WHERE YourColumn IS NULL
이것은 YourColumn이 NULL로 설정된 YourTable의 행을 카운트합니다.
mdma의 대응에 대한 대안으로.필터를 넣고 싶지 않은 경우
SELECT COUNT(case when xxx IS NULL THEN 1 end) cnt_xxx_null
FROM table
Oracle 설명서에는 다음과 같이 명시되어 있습니다.
COUNT(*)와 GROUPING을 제외한 모든 집계 함수는 null을 무시합니다.인수의 NVL 함수를 사용하여 집합 함수에 값을 null로 대체할 수 있습니다.
예를 들어, Scott 스키마를 사용하면 다음과 같습니다.
SQL> select empno, sal, comm
2 from emp;
EMPNO SAL COMM
---------- ---------- ----------
7369 800
7499 1600 300
7521 1250 500
7566 2975
7654 1250 1400
7698 2850
7782 2450
7788 3000
7839 5000
7844 1500 0
7876 1100
7900 950
7902 3000
7934 1300
14 rows selected.
Comm 열에는 알려진 값 4개(null이 아님)와 알려지지 않은 값 10개(null)가 있습니다.
~하듯이count(your_column_name)
는 알 수 없는 값을 참조할 수 있는 값으로 대체하는 데 필요한 null을 무시합니다.이는 NVL 기능을 사용하여 달성할 수 있습니다.
SQL> select count(nvl(comm, -1)) "number of null values"
2 from emp
3 where nvl(comm, -1) = -1;
number of null values
---------------------
10
"-1"이 통신 열 내에 존재하는 값이 아니라는 것을 알기 때문에 "-1" 값을 null 값의 "alias"로 사용했습니다.
편집:
롭의 제안대로.위 예제에서 where 절을 제거하고 아래와 같이 NVL2 기능을 사용할 수 있습니다.
SQL> select count(nvl2(comm,null,-1)) "number of null values"
2 from emp
3 /
number of null values
---------------------
10
다른 값도 null로 계산하려면 COALESCE 함수를 사용하면 실행 시간이 단축됩니다.
SELECT COUNT(COALESCE( _COLUMN, 1)) AS CNT FROM _TABLE
결과를 보고 널을 뒤집으려고 할 수도 있습니다.
SELECT
COUNT(DECODE(YourField, null, 1, null)) Nulls,
count(*) Everything,
COUNT(YourField) NotNulls
FROM YourTable
모든 것은 null + null이 아닌 null이어야 합니다.
select count(nvl(values, 0)) from emp where values is null;
기능:
create or replace function xxhrs_fb_count_null
return number
as
l_count_null number;
begin
select count(*) into l_count_null from emp where comm is null;
return l_count_null;
end;
용도:
select xxhrs_fb_count_null from dual
당신의 요구사항은 아래와 같습니다.테이블emp
행이 100개입니다.직원 20명에 대해서는HIRE_DATE
열은NULL
. 그래서 기본적으로 출력으로 20개를 받기를 원합니다.이는 이 포럼에서 다른 기고자들이 제시한 답변과는 별개의 또 다른 방법입니다.
-- COUNT (1) would return 100
-- COUNT (hire_date) would return 80
-- 100 - 80 = 20
SELECT COUNT (1) -
COUNT (hire_date)
AS null_count
FROM emp;
언급URL : https://stackoverflow.com/questions/2841551/how-can-i-count-only-null-values-in-oracle-plsql
'sourcecode' 카테고리의 다른 글
분기를 병합한 후 삭제해야 합니까? (0) | 2023.09.11 |
---|---|
WC_Product protected data 접근하기 3 (0) | 2023.09.11 |
dplyr:: 하나의 열을 선택하고 벡터로 출력 (0) | 2023.09.11 |
추적되지 않은 내용을 추적하는 방법은 무엇입니까? (0) | 2023.09.11 |
jQuery select2 선택 태그 값을 얻습니까? (0) | 2023.09.11 |