ISNULL
/ NULLIF
/ COALESCE
ISNULL(param1, param2)
SQL Server에서 사용되는 함수
NVL(param1, param2)
Oralce에서 사용되는 함수
NULLIF(param1, param2)
COALESCE(param1, param2, param3...)
예)
Table_T
col1 | col2 | col3 |
---|---|---|
3 | ||
2 | 4 | |
1 | 3 | 5 |
select sum(coalesce(c1, c2, c3)) from Table_T;
>> 6
(col1의 null이 아닌 값 중 처음:1 + col2의 null이 아닌 값 중 처음:2 + col3의 null이 아닌 값 중 처음:3)
NULL
이 포함된 연산NULL
이 포함되면 결과는 NULL
이다NULL
여부의 판단은 IS NULL
또는 IS NOT NULL
AVG(param)
param에 NULL값이 있다면 제외하고 연산한다.
COUNT(*)
얘 말고는 NULL값을 제외하고 연산한다.
HAVING
GROUP BY
를 사용하지 않는데 HAVING
사용?
가능하다
그렇다면 WHERE
와 무슨 차이?
WHERE
:
쿼리 결과셋을 내기 전, FROM
으로 가져온 데이터를 필터링한다. 이후 SELECT
에 의해 결과셋이 반환.
개별 행에 대해 / 최종 결과셋 이전에 / 결과셋을 위한 필터링
HAVING
:
FROM - WHERE - SELECT
기본 구조에 의해 도출된 결과셋에서 데이터를 조건에 따라 필터링한다.
전체 행에 대해 / 결과셋 이후 / 결과셋에서 최종 필터링
TOP(N) WITH TIES col GROUP BY
결과셋의 최상단부터 N개 출력 / col에 동일한 값이 있다면 같이 출력한다 / 정렬 방식
FROM
절에 나열된 테이블들을 임의로 =
연산자에 의해서만 수행되며, 그 이외의 비교 연산자를 사용하는 경우에는 모두 Non EQUI JOIN이다.