본문 바로가기
Database/SQLD

SQLD 문제 풀이 5

by KkingKkang 2023. 5. 13.

1. 다음 중 아래와 같은 2건의 데이터 상황에서 SQL의 수행 결과로 가장 적절한 것은?

TAB1

ROWNUM C1
1 A
(줄바꿈)
A
2 B
(줄바꿈)
B
(줄바꿈)
B
SELECT SUM(CC)
	FROM (
    	SELECT(LENGTH(C1) -
        		LENGTH(REPLACE(C1,CHAR(10))) +1) CC
        FROM TAB1
   )

3 - 2 + 1  = 2

5 - 3 + 1 = 3

답 : 5 

 

2. 다음 오라클 환경에서 날짜형 데이터를 다룰 경우, 아래 SQL 결과로 가장 적절한 것은? 

SELECT TO CHAR(TO_DATE('2015.01.10 10', 'YYYY-MM-DD HH24')
+ 1/24(60/10), 'YYYY.MM.DD HH24:MI:SS') FROM DUAL

+1 : 하루가 더해짐

+1 /24 : 60분

60분 / 6 = 10분 

답 : 2015.01.10 10:10:00

 

3. 아래는 SEARCHED_CASE_EXPRESSION SQL 문장이다. 이 때 사용된 SEARCHED_CASE_EXPRESSION은 SIMPLE_CASE_EXPRESSION을 이용해 똑같은 기능을 표현할 수 있다. 아래 SQL문장의 ㄱ 안에 들어갈 표현을 작성하시오. (스칼라 서브쿼리는 제외함)

스칼라 서브쿼리
- select 절에서 사용하는 서브쿼리
- 'scalar'는 한 번에 한가지만 처리하는' 이라는 뜻으로, 스칼라 서브쿼리에 의해 나오는 결과는 하나의 행이어야 한다.

SELECT *,
 (SELECT DEPT_NAME FROM DEPARTMENTS D WHERE D.DEPT_ID = E.DEPT_ID) --스칼라 서브쿼리
FROM EMPLOYEES E; 
--SEARCHED CASE EXPRASSION
SELECT LOC,
	CASE 
    	WHEN LOC = 'NEW YORK' THEN 'EAST'
    	ELSE 'ETC'
	END AS AREA
FROM DEPT;

--SIMPLE CASE EXPRESSION
SELECT LOC, 
	CASE
    	--ㄱ
        ELSE 'ETC'
    END AS AREA
FROM DEPT

답 : LOC WHEN 'NEW YORK' THEN 'EAST'

 

4. 팀별 포지션별 FW, MF, DF, GK 포지션의 인원수와 팀별 전체 인원수를 구하는 SQL을 작성할 때 결과가 다른 것은? 
(보기 1은 SQL server 환경이고, 나머지는 ORACLE 환경이다.)

--1
SELECT TEAM_ID,
	ISNULL(SUM(CASE WHEN POSITION = 'FW' THEN 1 END), 0) FW,
    ISNULL(SUM(CASE WHEN POSITION = 'MF' THEN 1 END), 0) MF, 
    ISNULL(SUM(CASE WHEN POSITION = 'DF' THEN 1 END), 0) DF, 
    ISNULL(SUM(CASE WHEN POSITION = 'GK' THEN 1 END), 0) GK, 
COUNT(*) SUM 
FROM PLAYER
GROUP BY TEAM_ID;

--2 
SELECT TEAM_ID,
	NVL(SUM(CASE POSITION WHEN 'FW' THEN 1 END),0) FW,
    NVL(SUM(CASE POSITION WHEN 'MF' THEN 1 END),0) MF,
    NVL(SUM(CASE POSITION WHEN 'DF' THEN 1 END),0) DF,
    NVL(SUM(CASE POSITION WHEN 'GK' THEN 1 END),0) GK,
COUNT(*) SUM
FROM PLAYER
GROUP BY TEAM_ID;

--3 
SELECT TEAM_ID,
	NVL(SUM(CASE WHEN POSITION = 'FW' THEN 1 END),0) FW,
    NVL(SUM(CASE WHEN POSITION = 'MF' THEN 1 END),0) MF,
    NVL(SUM(CASE WHEN POSITION = 'DF' THEN 1 END),0) DF,
    NVL(SUM(CASE WHEN POSITION = 'GK' THEN 1 END),0) GK,
COUNT(*) SUM
FROM PLAYER
GROUP BY TEAM_ID;

--4
SELECT TEAM_ID,
	NVL(SUM(CASE POSITION WHEN 'FW' THEN 1 ELSE 1 END),0) FW,
    NVL(SUM(CASE POSITION WHEN 'MF' THEN 1 ELSE 1 END),0) MF,
    NVL(SUM(CASE POSITION WHEN 'DF' THEN 1 ELSE 1 END),0) DF,
    NVL(SUM(CASE POSITION WHEN 'GK' THEN 1 ELSE 1 END),0) GK,
COUNT(*) SUM
FROM PLAYER
GROUP BY TEAM_ID;

 답 4 

 

5. 다음 중 아래 TAB1 을 보고 각 SQL 실행결과를 가장 올바르게 설명한 것을 고르시오

COL1 COL2
a NULL
b ''
c 3
d 4
e 3

1) SELECT COL2 FROM TAB1 WHERE COL2 = '' ▶︎ 공집합  빈 공백 값 1건이 조회된다

2) SELECT ISNULL(COL2, 'X') FROM TAB1 WHERE COL1 = 'a' ; ▶︎ 'X'

3) SELECT COUNT(COL1) FROM TAB1 WHERE COL2 = NULL; ▶︎ 1  COL2 IS NULL로 조회해야 함

4) SELECT COUNT(COL2) FROM TAB1 WHERE COL1 IN ('b','c') ▶︎ 2  

 

6. 사원 테이블에서 MGR의 값이 7698과 같으면 NULL을 표시하고, 같지 않으면 MGR을 표시하려고 한다. 

▶︎ SELECT ENAME, EMPTNO, MGR, NULLIF(MGR, 7698) AS NM FROM EMP

 

7. 다음 중 아래 데이터를 가지고 있는 EMP_Q테이블에서 세개의 SQL결과로 가장 적절한 것은?

SELECT SAL/COMM FROM EMP_Q WHERE ENAME = 'KING'; ▶︎ 0

SELECT SAL/COMM FROM EMP_Q WHERE ENAME = 'FORD'; ▶︎ error : 0으로 나누면 안된다

SELECT SAL/COMM FROM EMP_Q WHERE ENAME = 'SCOTT'; ▶︎ null : null 연산은 무조건 null

EMP_Q

ENAME(문자타입) SAL(숫자타입) COMM(숫자타입)
KING 0 300
FORD 5000 0
SCOTT 1000 null

 

8. 다음 중 아래와 같은 데이터 상황에서 SQL의 수행 결과로 가장 적절한 것은?

C1 C2 C3
1 2 3
  2 3
    3

SELECT SUM(COALESCE (C1,C2,C3)) FROM TAB1;

COALESCE 함수는 인자로 주어진 컬럼들 중에서 null이 아닌 첫 번째 값을 반환하는 함수이다. 

1 + 2 + 3 = 6

코우얼레스

 

9. 

ISNULL(표현식1, 표현식2) : 표현식1의 결과값이 null이면 표현식 2의 값을 출력한다.

NULLIF(표현식 1, 표현식 2) : 표현식 1이 표현식 2와 같으면 null, 같지 않으면 표현식 1을 리턴

COALESCE(표현식1,표현식2) : 임의의 개수 표현식에서 null이 아닌 최초의 표현식을 나타낸다.

 

10. 다음 중 아래 각각 3개의 SQL 수행 결과로 가장 적절한 것은?

집계함수를 사용하면 null값을 제외하고 연산해준다

SELECT AVG(COL3) FROM TAB_A; ▶︎ (20+0)/2 = 10

SELECT AVG(COL3) FROM TAB_A WHERE COL1 > 0; ▶︎ 20/1 = 20

SELECT AVG(COL3) FROM TAB_A WHERE COL1 IS NOT NULL;  ▶︎ 20 / 1 = 20

COL1 COL2 COL3
30 NULL 20
NULL 40 0
0 10 NULL
반응형

'Database > SQLD' 카테고리의 다른 글

SQLD 문제 풀이 7  (0) 2023.05.15
SQLD 문제 풀이 6  (0) 2023.05.15
SQLD 문제 풀이 4  (0) 2023.05.11
SQLD 문제 풀이 3  (0) 2023.05.10
SQLD 문제풀이 2  (0) 2023.05.10

댓글