본문 바로가기

SQL8

[SQL] RANK () OVER / ROW_NUMBER () OVER / DENSE()OVER 를 알아보자 순위를 붙여주는 함수는 여러 상황에서 자주 쓰인다. 여러 데이터 중 하나의 데이터만 가져오고 싶을 때, 순위를 매겨서 특정 순위만 가져오면 손쉽게 데이터를 가공할 수 있기 때문이다. 그래서 자주 사용하는 + 안쓰지만 알아두면 좋은 함수를 가져와봤다. 1.RANK () OVER 데이터에 순위를 붙여주는 함수이다. 해석하면 mem_no 기준으로 ord_no를 거꾸로 세어줘. 정도이다. Partition by 값이 같은 것이 있으면 중복 순위가 발생하고, 그 다음 순위는 3등이 된다. 중복 값이 발생하지 않는 상황에서는 쓰기 좋지만, 중복 값이 발생하는 상황에서는 썼다가 데이터가 꼬일 수 있다. RANK() OVER(partition BY mem_no order by ord_no desc) as rank A .. 2022. 1. 3.
[SQL] 자주 쓰는 날짜 함수 알아보자 (내가)자주 쓰는 날짜 계산식 주문 데이터를 가공하면서 가장 중요한 것 중 하나는 날짜이다. 어느 날에 주문이 일어났고, 주문과 주문 사이의 갭을 구한다거나, 특정 월의 주문만 구한다거나.. 날짜로 자르는 방법은 굉장히 다양하기 때문에 날짜 함수 또한 아주 다양하던데 나는 주로 3가지를 많이 썼던 것 같다. 1. Date_diff 날짜와 날짜 사이의 차이를 세주는 함수 date_diff('day', '2021-01-01', '2021-01-03) 라고 보았을 때, 2021-01-01 ~ 2021-01-03 사이의 갭을 세줘, 라는 뜻이다. 쓰는 순서는 date_diff('day', 작은날짜, 큰날짜)이다. 요거 자꾸 헷갈리니까 까먹지 말기. date_diff('day',date(before),date(m.. 2022. 1. 3.
[SQL] Case when ~ then ~ end 조건 표현식 쉽게 써보자 Case When 조건문 Case When은 자주 쓰면서도 쉽게 이해하지 못해서 친해지기 어려웠던 구문이다. 조건을 잘 넣은 것 같은데 맨날 오류가 나서 분노를 유발했던 친구이기 때문이다. 그래서 글로 쓰면서 정리해보려고 이렇게 기록을 남겨본다. 사용하면서 내가 알게 된 것은 다음과 같다. - 나는 주로 select 절에 사용한다. 다른 절에 사용이 가능한지는 모르겠다. - 해석하자면 Case when 이러이러한 조건일 때 then 얘를 출력해줘 else 나머지는 이렇게 출력해줘 end 정도이다. (Case When 조건값 then 결과값 else 다른 경우 결과값 end) - 다중 조건도 가능하고, 여러 값을 출력하는 것도 가능하다. 그래서 아래처럼 MECE하게 값을 구분해야 할 때 사용한다. *MEC.. 2022. 1. 3.
[SQL] Group by 쉽게 알아보자 GROUP BY에 대해 알아보자 그룹바이는 생김새와 같이 데이터를 그룹화해주는 구문이다. 어떤 데이터를 어떤 기준에 맞춰 묶어주고 싶을 때 사용하는 기능입니다. 사실 엄청 많이 써요. 기본적으로 데이터를 가공할 때는 묶어주는 일이 거의 필수적이기 때문에.. 그래서 실제로 쓰면서 알게된 내용을 몇 자 적어보자면 아래와 같습니다. - 그룹화해주기 때문에 자동으로 중복제거(Distinct 효과)가 된다. - 잘못 사용하면 Compiler failed 오류가 난다.(그럴 땐 group by 를 빼주면 정상 동작한다) - 사용 예제는 간단하게 아래와 같다. where 절 아래에 사용한다. - 그룹화할 수 없는(= 중복제거할 수 없는) 형태의 쿼리에서는 동작하지 않는다. select 가져올 컬럼명 from 기준 테.. 2022. 1. 3.