교재: SQL 자격 검정 실전 문제
2과목 제1장 - SQL 기본
41번 ~ 50번

SELECT SUM(CC)
FROM (
SELECT(LENGTH(C1) -
LENGTH(REPLACE(C1,
CHR(10))) + 1) CC
FROM TAB1
LENGTH : 문자열의 길이를 반환하는 함수
CHR : 주어진 ASCII 코드에 대한 문자를 반환하는 함수 (CHR(10)->줄바꿈을 의미(문제에 제시됨))
REPLACE : 문자열을 치환하는 함수 (REPLACE(C1, CHR(10)) -> 줄바꿈 제거)

C1의 길이: 3, 5
줄바꿈 또한 하나의 문자를 의미한다.
LENGTH(REPLACE(C1, CHR(10))) : (2, 3)
REPLACE(컬럼,'기존 문자열', '새로운 문자열') : 특정 컬럼의 특정 문자열을 새로운 문자열로 대체한다.
만약 새로운 문자열이 없으면 ''으로 치환, 즉 제거한다는 뜻이다.
3이 나왔는데, 각 열마다 +1을 해주어야 한다. 따라서 답은 5이다.
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 = 1시간
1/24/6 = 10분
2015.01.10 10시에 10분을 더한 결과가 나온다.
답:3번

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

NVL(ISNULL) 함수
NVL(A, 지정값) : A가 NULL인 경우 지정값, 그렇지 않은 경우 값을 그대로 출력한다.
예를 들어 선지 3번, SUM(~)이 NULL인 경우 0을 출력하는 것이다.
NVL은 ISNULL과 쓰임이 같다.
CASE 표현
SEARCHCASE WHEN 조건1 THEN 값 WHEN 조건2 THEN 값 ELSE 값 END as 결과컬럼명SIMPLE
CASE 컬럼명 WHEN 값 THEN 값 WHEN 값 THEN 값 ELSE 값 END as 결과컬럼명새로운 결과를 새로운 컬럼 '결과컬럼명'에 저장해 주는 것이다.
선지 4번은 ELSE 0 으로 표시해야 다른 3개의 지문과 같은 결과가 나온다.

1번: 실행 결과가 없다.(X) -> NULL
2번: 정답
3번: ISNULL을 사용해야 한다.
4번: 실행 결과는 2이다. : NULL값도 같이 카운팅된다.
답: NULLIF
NULLIF(A, B)
A == B이면 NULL
A != B이면 A
단일행 NULL 관련 함수 정리
NVL(표현식1, 표현식2) / ISNULL(표현식1, 표현식2) : 표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다. 단 표현식 1과 2의 데이터타입이 같아야 한다.
NULLIF(표현식1, 표현식2) : 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.
COALESCE(표현식1, 표현식2, ... ) : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴한다.
0/300 : 0
5000/0 : 에러발생 - 실행이 아예 되지 않는다.
1000/NULL : NULL - NULL이 포함된 연산의 결과는 NULL이다.
답: 3번
각 ROW에서 첫번째로 NULL이 아닌 값인 1, 2, 3을 반환한다.
답: NVL, NULLIF, COALESCE

COUNT: NULL값을 포함한 행의 수
나머지: NULL값 제외
20/2 = 10
20/1 = 20
20/1 = 20
답: 3번