본문 바로가기
TIL&WIL

241010 TIL

by 나노다 2024. 10. 10.

SQL

  • 조회하려는 컬럼에 아무 값이 없는 빈 칸이 있는 경우
    MYsql은 빈 칸의 값을 숫자 0으로 취급하기 때문에, 연산 결과가 원하는대로 나오지 않을 수 있음. 아래와 같은 방법으로, null이 아닌 칸이라는 조건을 걸어주는 식으로 해결 가능
WHERE 컬럼 is not null

      또는 아래 두 방법처럼 빈 칸에 대체할 값을 부여해주는 식으로도 가능

COALESCE(빈칸있는컬럼, 대체값)
IF(빈칸있는컬럼 is null, 대체값, 빈칸있는컬럼)

 

  • 컬럼에 데이터 형식이 통일되지 않은 값이 있는 경우
IF(정수형컬럼='문자', null, 정수형컬럼)

정수형 컬럼에 문자 값인 칸이 있는 상황 등등
위와 같은 방법으로 삐져나온 칸을 제외하고 연산하는 방향으로 해결 가능

 

  • 데이터 형식을 날짜값으로 변경하는 함수 수정) 이 함수는 DATE()다!!!
DATE_FORMAT(date(컬럼), '%Y') "연도"
DATE_FORMAT(date(컬럼), '%m') "월"
DATE_FORMAT(date(컬럼), '%d') "일"
DATE_FORMAT(date(컬럼), '%w') "요일"
DATE_FORMAT(date(컬럼), '%y%m%d')

2024년 5월 24일이라고 가정할 때, 함수 순서대로 2024, 05, 24, 5가 출력됨

다섯번째 함수처럼 여러 날짜값을 한꺼번에 출력 가능, 위 가정대로면 240524 출력 수정) 출력된 240524는 문자값임!!!

※ 연도 함수에서 '%y'로 쓰면 연도의 뒷 두 자리만 출력함, 위 가정대로면 24를 출력

요일은 일요일=0을 기준으로 월=1, 화=2, 수=3, 목=4, 금=5, 토=6을 출력

 

  • 대충 알겠는데 정확히 이해하진 못한 함수들
RANK() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)
RANK() OVER(ORDER BY 컬럼2 DESC)

순위를 매기는 함수, 첫번째 함수를 말로 풀어보면 "컬럼1 별로 컬럼2가 값이 작은 칸부터 1위로 순위를 매겨줘"

두번째 함수처럼 파티션 설정을 안하면 테이블 전체를 파티션으로 침, 이번엔 desc가 있기 때문에 "값이 큰 칸부터 1위로 순위를 매겨줘"

 

SUM() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)

더 공부해보도록 하자...

 

'TIL&WIL' 카테고리의 다른 글

241028 TIL  (2) 2024.10.28
241011 TIL  (1) 2024.10.11
241009 TIL  (0) 2024.10.09
241008 TIL  (1) 2024.10.08
241007 TIL  (1) 2024.10.07