▣ 오라클 COUNT, 널(NULL), 공백 SQL 질의
집계함수 | 설명 |
COUNT(*) | NULL 값을 포함한 행의 수 |
COUNT(표현식) | 표현식의 NULL 값을 제외한 행의 수 |
SUM( [DISTINCT | ALL] 표현식) | 표현식의 NULL 값을 제외한 합계 |
AVG( [DISTINCT | ALL] 표현식} | 표현식의 NULL 값을 제외한 평균 |
MAX( DISTINCT | ALL] 표현식) | 표현식의 최대값 |
MIN( DISTINCT | ALL] 표현식) | 표현식의 최소값 |
* DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션(중복제거)
2013년 54번
정답 : 4번
1) 해당되지 않는 값
2) 의도적으로 유보한 값
3) 알 수 없는 값
4) 모르는 값이 아닌 0
0은 널이 아님
2021년 54번
정답 : 4번
가. 중복되는 값이 있으면, COUNT(속성명) ≠ COUNT(DISTINCT 속성명) -> DISTINCT 중복값을 제거하고 계산(틀림)
나. 중복되는 값이 없는 속성의 경우, COUNT(*) = or ≠ COUNT(속성명) -> NULL 값이 존재하지 않으면 같음(틀림)
다. COUNT(*)은 모든 투플을 카운트 하기 때문에 NULL도 포함 -> 맞음
라. COUTN(*)은 중복되는 투플도 포함함 -> 맞음
2021년 60번
정답 : 4번
가. SELECT 학과 FROM 학생;
-> WHERE절이 없고, DISTINCT 문도 없으므로 전체 레코드 출력 60 + 40 + 30 + 10 = 140건
나. SELECT DISTINCT 학과 FROM 학생;
-> 학과 속성의 중복을 제거했으므로, { 수학, 화학, 물리, NULL } 총 4건
다. SELECT COUNT(*) FROM 학생 GROUP BY 학과;
-> 학과 기준 GROUP BY 했으므로, { 60, 40, 30, 10 } 4건 반환
가 140, 나 4, 다 4 정답 4번
2017년 58번
정답 : 1번
COUNT(*) as X : 전체 row의 개수를 의미하므로 B컬럼의 Null 값에 무관하게 6개
COUNT(B) as Y : 컬럼B의 개수를 의미하므로 B의 Null값을 제외한 4개
COUNT(CASE WHEN B IS NOT NULL AND LEN(LTRIM(B)) = 0 THEN '1' END) AS Z
B 컬럼이 Null 값이 아니고 공백을 제외한 TRIM 길이 LENGTH가 0 이면 1 개씩 카운트 하므로
여기에 해당되는 조건은 A가 2, B 가 ' ' 인 row 1 개
즉 X=6, Y=4, Z=1
SELECT X, X-Y, Z 결과는 6, 2, 1
------------------------------------------------------------------
-- 2017년 정보시스템감리사 DB 58번 SQL
DROP TABLE TEST;
CREATE TABLE TEST(A NUMBER, B VARCHAR(10));
INSERT INTO TEST VALUES (1, 'kim');
INSERT INTO TEST VALUES (2, ' '); --(공백)
INSERT INTO TEST VALUES (3, NULL);
INSERT INTO TEST VALUES (4, 'park');
INSERT INTO TEST VALUES (5, NULL);
INSERT INTO TEST VALUES (6, 'lee');
SELECT * FROM TEST;
SELECT X, X-Y, Z
FROM (SELECT COUNT(*) AS X, COUNT(B) AS Y,
COUNT(CASE WHEN B IS NOT NULL AND LTRIM(B) IS NULL
THEN '1' END) AS Z
FROM TEST) T;
* 서브쿼리 체크
SELECT COUNT(*) AS X, COUNT(B) AS Y,
COUNT(CASE WHEN B IS NOT NULL AND LTRIM(B) IS NULL
THEN '1' END) AS Z
FROM TEST;
'데이터베이스' 카테고리의 다른 글
함수 기반 인덱스(Function-based indexing) 오라클 (0) | 2021.09.10 |
---|---|
오라클 SQL_ ANY, SOME, ALL, NOT EXISTS, NOT IN 연산, 부양가족, 사원, 평균 봉급, (0) | 2021.09.10 |
조인, 서브쿼리, 집합 연산 SQL 질의 문제(오라클) (0) | 2021.09.09 |
SQL 인젝션(Injection) 보안 상의 허점 (0) | 2021.09.09 |
관계 데이터 모델의 키(Key) 후보키, 수퍼키, 기본키, 대체키, 외래키 (0) | 2021.09.09 |