오답 정리
Q7. WHERE 절과 HAVNING절 차이
WHERE : 전체 데이터에서 특정한 조건으로 필터링하는 역할 (집계함수 사용 불가)
HAVING : 집계된 결과에서 필터링하는 역할
Q11.
'' 입력 시 | 조회하기 | |
ORACLE | NULL | IS NULL() |
SQL | '' | 컬럼명 = '' |
Q15. 줄바꿈도 COUNT된다
CHR(10) : 줄바꿈
REPALCE(대상,CHR(10)) : 줄바꿈 제거
Q16. TO_CHAR() : 날짜를 문자형으로 형 변환
1/24/60 : 1분
1/24/(60/10) : 10분
1/12/(60/30) : 1시간
Q23.
COUNT(*) : NULL 값을 포함한 행의 수를 출력한다
COUNT(표현식) : 표현식의 값이 NULL값인 것을 제외한 행의 수를 출력한다
COUNT(NULL) : 0
Q28. ORDER BY (CASE WHEN ID = 999 THEN 0 ELSE ID END)
->ORDER BY의 정렬조건으로만 사용된다. 실제 값에는 영향을 주지않는다
Q29. SELECT 절에 없는 컬럼명이어도 ORDER BY에서 정렬 조건으로 사용 가능하다
ORDER BY COUNT(*) ASC -> GROUP BY절이 있다면 사용 가능 (그룹된 행의 수)
NULL
NULL과 공집합
- NULL : 값이 정의가 안된 것
- 공집합 : 조건에 맞는 결과가 없는 것 (=FALSE)
NULL | 공집합, FALSE | |
COUNT() | 0 | 0 |
NVL() | 리턴값 | 공집합 |
문자,일반 함수() | NULL | 공집합 |
집계함수() | NULL | NULL |
- WHERE 절 COUNT(공집합) = 0
- HAVING 절 COUNT(공집합) = 0
NULL
IN (NULL) | NULL제외, 무시 |
EXISTS (NULL) | NULL제외, 무시 |
NOT IN (NULL) | 공집합 |
NOT EXISTS (NULL) | NULL 출력 |
- ORACLE은 NULL 값을 가장 큰 값으로 간주
- SQL은 NULL값을 가장 작은 값으로 간주
NULL 관련 함수
DECODE(A,B,C) | A가 B이면 C 리턴, 그 외 NULL리턴 |
DECODE(A,B,C,D) | A가 B이면 C 리턴, 그 외 D 리턴 |
DECODE(A,B,C,D,E) | A가 B이면 C, D면 E 리턴, 그 외 NULL 리턴 |
NVL(A,B) | A가 NULL이면 B 리턴 아니면 A 리턴 |
NVL(A,B,C) | A가 NULL이면 C 리턴 아니면 B 리턴 |
NULLIF(A,B) | A=B이면 NULL 리턴 아니면 A 리턴 |
COALESCE(A,B) | A가 NULL이면 B 리턴 |
COALESCE(A,B,C) | A가 NULL이면 B 리턴, B가 NULL이면 C 리턴 |
IFNULL(A,B) | A가 NULL이면 B리턴 아니면 A |
'SQL' 카테고리의 다른 글
[MYSQL] 프로그래머스 SQL 문제풀기 (0) | 2024.03.18 |
---|---|
[MYSQL] LEFT,MID,RIGHT/ SUBSTR (0) | 2024.03.14 |
[MYSQL] GOALESCE(), 소수점 처리, DATEDIFF(), TIMESTAMPDIFF() (0) | 2024.02.16 |
[MYSQL] DATE_FORMAT() (0) | 2024.02.14 |
[MYSQL] Subquery (0) | 2024.01.06 |