SQL을 풀면서 사용했던 팁들을 정리하자.
1. DATE_FORMAT(원하는컬럼, "%Y-%M-%D")
DATE의 FORAMT이 시간이나 년도까지 나와있다면, 이를 간단하게 년도,달,일로 변경하여 준다.
2. MONTH(DATE컬럼), YEAR(DATE컬럼)
DAY도 있다. 해당 컬럼의 달과 년 값을 비교할때 사용한다.
3. 모든 쿼리 이후 결합은 UNION ALL을 사용하자.
JOIN은 쿼리 이후 결합으로 보기는 힘들다. 이를 조심하자.
서브쿼리
서브쿼리 시 주의 할 점
1. HAVING에서 집계함수 사용시, SELECT에서 묶인 후에 각 행마다 다른 속성을 사용할 수 없다.
2. 서브쿼리는 WHERE절에서 = 로 비교시 1개의 COLUMN밖에 비교할 수 없다. 2개이상을 원할때는, IN을 사용하자.
3. HAVING절에서 HAVING MAX(NUMBER)와 같이는 사용할 수 없다. 이는 HAVING이 가진다는 영어 해석 떄문에
발생하는 오류인데, HAVING절도 SELECT절 처럼 NUMBER=MAX(NUMBER)와 같이 사용해야한다.
4. 기본적인 내용이지만.. WHERE절에서는 집계함수를 쓸 수 없다.
FROM절
FROM 절에 서브쿼리를 사용할땐, ALIAS를 설정해 주어야 한다.
(
IF 절
못 풀겠는 문제가 나왔다.
자꾸 나는 DML을 활용해 실제로 INSERT를 하는 형태로 실제 작업처럼 하려는 것이 문제였다.
1. 자동차 ID 별로 묶어준다.
2. 해당 자동차 별로 SUM을 구할 것이다.
3. IF (조건,'조건성공시 값', '실패시 값')의 형태로 이루어진다.
4. 해당 결론이 SUM이 0이면 (현재 차가 없다면), '대여가능', 그렇지 않다면 '대여중'이 된다.
IFNULL
IFNULL(A,값) -> A가 NULL이라면, 값을 대입한다.
함수
함수(IF 등)을 사용한 후에는, 이를 그대로 사용할 시 AS 를 통해 이름을 설정해주어야 한다.
IN (A,B,NULL)에서의 주의점
IN안에 NULL이 존재하면, 아무 RETURN도 존재하지 않게 된다. (A,B,가 있더라도 나오지 않는다)
그 이유는, NULL이 존재하는 순간, 바로 FALSE가 나오게 되기 때문이다.
CASE WHEN END 문.
END를 주의하라.
'코딩테스트' 카테고리의 다른 글
SQL 2 (0) | 2024.03.30 |
---|---|
HASH (0) | 2024.03.17 |
프로그래머스로 풀이 사이트 변경 (0) | 2024.03.13 |
BFS/DFS 다시.. (0) | 2024.03.06 |
TREE 관련 문제 (1) | 2024.03.03 |