SQLD 기출을 변형한 문제입니다. SQLD를 처음 공부하시는 분이라면 위 함수에 대한 개념을 숙지하고 문제를 풀어보시면 이해하는데 도움이 될 것 입니다. 해당 유형에 대한 헷갈릴 수 있는 것들을 문제로 만들어놨습니다.
아래 문제들을 직접 실행시켜보고 싶은 분들을 위해 DDL 쿼리를 남겨놓습니다. 문제에 나온 DML 쿼리를 사용해 직접 실습을 통해 결과를 이해하시는 것을 추천드립니다.
SQLServer 기준 ( MSSQL )
--SQLD_1 테이블 생성
CREATE TABLE SQLD_1(
A INT,
B INT,
C INT);
--데이터 입력
INSERT INTO SQLD_1 (A,B,C) VALUES (10,NULL,10 );
INSERT INTO SQLD_1 (A,B,C) VALUES (10,20,30 );
INSERT INTO SQLD_1 (A,B,C) VALUES (NULL,60,80 );
Oracle 기준
--SQLD_1 테이블 생성
CREATE TABLE SQLD_1(
A NUMBER,
B NUMBER,
C NUMBER);
--데이터 입력
INSERT INTO SQLD_1 (A,B,C) VALUES (10,NULL,10 );
INSERT INTO SQLD_1 (A,B,C) VALUES (10,20,30 );
INSERT INTO SQLD_1 (A,B,C) VALUES (NULL,60,80 );
SUM () AVG() 유형 문제
다음은 SQLD_1 테이블입니다. 이 테이블을 기준으로 아래 문제를 정답을 구하세요.
A | B | C |
10 | NULL | 10 |
10 | 20 | 30 |
NULL | 60 | 80 |
1. 아래 쿼리를 수행한 결과로 옳은 것은?
정답입력
SELECT SUM(A),SUM(B),SUM(C) FROM SQLD_1;
1. NULL, NULL, 120
2. 10, 20 , 30
3. 20, 80, 120
4. NULL
2. 아래 쿼리를 수행한 결과로 옳은 것은?
정답입력
SELECT A+B+C FROM SQLD_1;
1)
NULL |
60 |
NULL |
2)
20 |
80 |
120 |
3)
NULL |
NULL |
NULL |
4)
20 |
60 |
140 |
3. 아래 쿼리를 수행한 결과로 옳은 것은?
정답입력
SELECT AVG(A)+AVG(B)+AVG(C) FROM SQLD_1;
1) NULL
2) 0
3) 90
4) 45
4. 아래 쿼리를 수행한 결과로 옳은 것은 ?
정답입력
SELECT AVG(B) FROM SQLD_1 WHERE B > 20
1) 60
2) 0
3) NULL
4) 20
5. 아래 쿼리를 수행한 결과로 옳은 것은 ?
정답입력
SELECT AVG(B) FROM SQLD_1 WHERE B IS NULL
1) NULL
2) 0
3) 90
4) 45
MIN() MAX () 유형 문제
다음은 SQLD_1 테이블입니다. 이 테이블을 기준으로 아래 문제를 정답을 구하세요.
A | B | C |
10 | NULL | 10 |
10 | 20 | 30 |
NULL | 60 | 80 |
6. 위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오. ( DBMS는 ORACLE 입니다. )
정답입력
SELECT MAX(A), MAX(B) FROM SQLD_1 WHERE A IS NOT NULL;
1)
NULL | 60 |
2)
10 | 60 |
3)
10 | NULL |
4)
NULL | NULL |
7. 위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.( DBMS는 SQLServer 입니다. )
정답입력
SELECT MIN(A),MIN(B),MIN(C) FROM SQLD_1;
1)
NULL | 20 |
2)
10 | 20 |
3)
10 | NULL |
4)
NULL | NULL |
8. 위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.( DBMS는 Oracle 입니다. )
정답입력
SELECT MAX(A),MAX(B),MAX(C) FROM SQLD_1;
1)
NULL | 60 | 80 |
2)
NULL | NULL | 80 |
3)
10 | 60 | 80 |
4)
10 | NULL | 80 |
COUNT() 유형 문제
다음은 SQLD_1 테이블입니다. 이 테이블을 기준으로 아래 문제를 정답을 구하세요.
A | B | C |
10 | NULL | 10 |
10 | 20 | 30 |
NULL | 60 | 80 |
9. 위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.
정답입력
SELECT COUNT(A) FROM SQLD_1
1) 0
2) NULL
3) 1
4) 2
10.위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.
정답입력
SELECT COUNT(*) FROM SQLD_1
1) 0
2) 1
3) 2
4) 3
11.위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.
정답입력
SELECT COUNT(0) FROM SQLD_1
1) 0
2) 1
3) 2
4) 3
12.위 테이블을 이용하여 아래 SQL문을 실행한 결과를 고르시오.
정답입력
SELECT COUNT(*) FROM SQLD_1 WHERE 1=2
1) NULL
2) 0
3) 구문오류
4) 3
정답과 해설
1. 정답 : 3
해설 : 각각의 컬럼의 합을 구하는 문제입니다. NULL 값은 제외되며 계산됩니다.
2. 정답 : 1
해설 : 각 행의 합을 구하는 문제입니다. NULL 값이 있으면 다른 값과 비교를 해도 NULL이 됩니다. 따라서 NULL이 없는 유일한 행은 2번째 행입니다. 10+20+30으로 60이 나오며 나머지 행들은 각 NULL과 + 연산을 수행하기 때문에 NULL 값이 됩니다.
3. 정답 : 3
해설 : 각 컬럼별 평균을 모두 합하는 문제입니다. 컬럼 값이 NULL인 경우 함수 총계에서도 제외됩니다.
AVG(A) - (10+10)/2 = 10
AVG(B) - (20+60)/2 = 40
AVG(C) - (10+30+80)/3 = 40
따라서 총합은 90입니다.
4. 정답 : 1
해설 : 컬럼 B에서 20보다 큰 값들의 평균값을 구하는 문제입니다. 20보다 큰 값은 60 1개 뿐이므로 AVG(B)를 하게 되면 60/1로써 60이 조회됩니다.
5. 정답 : 1
해설 :NULL인 값들의 평균값을 구하는 문제입니다. 많이들 0인지 NULL인지에 대해서 고민하셨을 겁니다. NULL 값을 연산하게 되면 NULL이 반환됩니다.
6. 정답 : 2
해설 :NULL 값을 제외한 A칼럼의 최소값(MIN)과 최대값(MAX)를 구하는 문제입니다.
7. 정답 : 2
해설 : 각 컬럼들의 최솟값을 구하는 문제입니다. NULL 값을 최솟값을 구합니다. DBMS에 대한 결과값 차이는 없습니다.
8. 정답 : 3
해설 : 각 컬럼들의 최댓값을 구하는 문제입니다. NULL 값을 최댓값을 구합니다. DBMS에 대한 결과값 차이는 없습니다.
9. 정답 : 4
해설 : 칼럼 A에 대한 COUNT()함수의 결과를 구하는 것입니다. COUNT()를 할 때는 NULL 값이 제외됩니다. 따라서 2가 조회됩니다.
10. 정답 : 4
해설 : 테이블 전체 행에 대한 COUNT()함수의 결과를 구하는 것 입니다. 모든 행의 갯수가 리턴되어 3이 조회가 됩니다.
11. 정답 : 4
해설 : COUNT(1). COUNT(0), COUNT(*)의 결과값에 대한 차이는 없습니다. 위와 동일합니다.
12. 정답 : 2
해설 : WHERE 1=2를 만족하는 행의 갯수를 출력하는 SQL문입니다. 1=2는 거짓이므로 결과 값은 0이 조회됩니다.
'IT경험공유 > DataBase' 카테고리의 다른 글
[SQL SELECT문] 컬럼명 나열 VS 아스타(*) 차이 (1) | 2023.09.07 |
---|---|
제48회 SQLD 합격후기 교재추천 및 공부법 정리 (1) | 2023.04.10 |
SQLD 48회 기출문제 복원 (0) | 2023.03.19 |
SQLD 자격증 요약정리 [ 1과목- 데이터 모델링의 이해 ] (0) | 2023.03.16 |
[DB] 데이터베이스 정규화 예시를 통한 완벽이해 (0) | 2023.03.15 |
댓글