본문 바로가기
IT경험공유/DataBase

SQLD 기출 변형 문제 풀이/해설 - SUM(), MIN(),MAX(), COUNT(), AVG()

by 경공N잡러 2023. 3. 21.

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이 조회됩니다.

 

 

 

 

 

 

댓글