SQL 문법 메모 : GROUP BY, DATE_FORMAT, IFNULL, CASE WHEN

Parker.Park·2022년 8월 26일
0

MySQL

목록 보기
1/6

몇 가지 쿼리문법 정리

우선 쿼리문을 어떻게 정리해야 할지 고민이던중 프로그래머스에 코딩연습 하듯이 쿼리문도 연습할 수 있게 마련해놓았다. 풀면서 몇 가지 새롭게 익히게된 문법을 정리해보겠다.

GROUP BY, HAVING

GROUP BY는 같은 값을 그룹시키는 것이다. 집계 함수(Count, Max, Min, Sum, Avg)와 함께 사용 된다.

SLECT COLUMN_NAME
FROM TABLE_NAME
WHERE CONDITION
GROUP BY COLUMN_NAME

여기서 조건절을 추가할 때 WHERE와 HAVING이 있는데, WHERE는 그룹화 하기 전이고 HAVING은 그룹화 후에 조건이다.
HAVING은 집계 함수에 조건을 넣을 수 있다.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

DATE_FORMAT

날짜와 시간 표현에 대해서 정리해보자.

#현재 시간(GMT)이 나온다. 
SELECT NOW();
# 2022-08-30 07:52:35

#날짜만
SELECT DATE (NOW());
# 2022-08-30

#시간만
SELECT TIME (NOW());
# 08:07:53

#년도만
SELECT YEAR (NOW());
# 2022


#월만
SELECT MONTH (NOW());
# 8

#날짜 포맷을 지정할 수있다. 대소문자 주의
SELECT DATE_FORMAT(NOW(), '%Y-%M-%D');
# 2022-August-30th

SELECT DATE_FORMAT(NOW(), '%y-%m-%d');
# 22-08-30


# 예를 들어'2022-08-30' 형식으로 가져오고 싶으면 다음과 같이 할 수 있다.
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
# 2022-08-30

IFNULL

Column값이 Null인 경우를 처리해준 함수이다. IFNULL, CASE, COALESCE 와 같은 함수들이 있다고 한다. Oracle에서는 NVL()과 비슷한 기능을 한다고 한다.

SELECT IFNULL(COLUMN_NAME, "대체할 값") FROM TABLE_NAME;

CASE WHEN

SQL-IF문과 비슷하지만 여러 조건을 갖으며, 첫 번째부터 조건이 맞으면 지정한 return값을 갖는다.

CASE
	WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   	WHEN condition3 THEN result3
    ELSE result
END;

참조

[[MySQL] 그룹화하여 데이터 조회 (GROUP BY), [확장형 뇌 저장소:티스토리]]

[SQL GROUP BY Statement, w3school]

[SQL HAVING Clause, w3school]

[MySQL 날짜/시간 표현, 조건검색(최근 하루/일주일/한달)]

[[DB] MySQL NULL 처리(IFNULL, CASE, COALESCE)]

profile
개발자준비중

0개의 댓글