한량처럼 살고 싶다

[SELECT] SQL 풀면서 헷갈리는 문법 모음 (계속 업데이트) 본문

PS/SQL

[SELECT] SQL 풀면서 헷갈리는 문법 모음 (계속 업데이트)

투영 2024. 1. 16. 21:59

1. DATE_FORMAT()

 

아래처럼 작성하면 2024-12-12 로 출력됨

DATE_FORMAT(DATE, '%Y-%m-%d)
YEAR(DATE); --연도추출
MONTH(DATE); --월 추출
DATE(DATE); --일 추출

 

2. ROUND(값, 자릿수)

 

자릿수를 n이라 할 때,

  • 자릿수 양수: n의 자리까지 반올림
  • 자릿수 음수: 10^(n-1) 의 자리까지 반올림
    • ROUND(12345, -1) --정수 첫 번재 자리(=일의 자리)까지 반올림 (10^0)
    • ROUND(12345, -2) --정수 두 번째 자리(=십의 자리)까지 반올림 (10^1)
  • 자릿수 0: 1의 자리까지 반올림 (=정수로 만듦)

 

3. ORDER BY 여러개

 

A로 내림차순, A가 같다면 B로는 오름차순이라 했을 때, 컬럼이름과 정렬방법 띄어쓰기로 구분하여 한 번에 같이 쓰고, 또 다른 기준을 반점으로 연결해주면 된다.

ORDER BY A DESC, B ASC;

 

4. NULL 값 처리하기

  1. NULL 일 때 제외하기
  2. NULL 일 때 다른 값으로 대체하기
--NULL 일 때 출력하지 않기
WHERE A IS NOT NULL

--NULL 일 때 값 대체하기
SELECT IFNULL(A, 'NULL일 때 대체할 값')

 

5. 문자열 검사하기

SELECT * FROM TABLE

-- %는 여러 글자 (제한 없음)

WHERE NAME LIKE '강원도%'; --강원도로 시작하고, 뒤에 뭐가 오든 상관없음
WHERE NAME LIKE '%강원도%'; --중간에 강원도가 들어가 있으면 됨
WHERE NAME LIKE '%강원도'; -- 앞에 뭐가 오든 강원도로 끝나기만 하면 됨 

-- _는 한 글자
WHERE NAME LIKE '_강원도%' -- 한 글자 뒤에 강원도 붙어있기만 하면 됨

 

6. HAVING

 

WHERE 처럼 조건을 갖지만, WHERE에 나올 수 없는 집계 함수를 적을 수 있다.

반드시 GROUP BY 다음에 나와야 한다.

SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(PRODUCT_ID) >= 2
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

 

7. LIMIT

 

LIMIT 뒤에 적힌 숫자가 조회할 행의 개수를 의미한다.

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1