TIL - SQL

HJ·2024년 5월 17일

SQL_TIL(since_20240415)

목록 보기
10/15

[CODEKATA]

1.

  1. 2022년 10월 16일에 대여 중인 자동차를 조회하기 위해서,
start_date <= '2022-10-16' and end_date >= '2022-10-16'
  1. '대여중'과 '대여 가능'으로 표시하기 위해서,
if(start_date <= '2022-10-16' and end_date >= '2022-10-16', '대여중', '대여 가능')
  1. 하지만, 차량 별로 대여 중인지, 대여가 가능한지 여부를 알아야 하고, 차량별로 히스토리가 여러개이기 때문에 대여 가능한 값만 빼고 다 조회해야 한다. 즉, 그룹별로 대여 가능 여부를 다 더해야 한다.
if(sum(if(start_date <= '2022-10-16' and end_date >= '2022-10-16', 1, 0)) >=1, '대여중', '대여 가능)

2.

  1. datediff로 날짜 간의 간격을 측정할 때, D-day방식으로 측정한다면 단순하게 datediff만 사용하면 되는데, 날짜 수 세기 방식이라면 +1을 해줘야 한다.
if(datediff(end_date, start_date)+1 >= 30, '장기 대여', '단기 대여') as RENT_TYPE
case when datediff(end_date, start_date) +1 >= 30 then '장기 대여'
     else '단기 대여' end RENT_TYPE

3.

  1. 두 테이블에서 각자 데이터를 추출한다.
select date_format((sales_date), '%Y-%m-%d') as sales_date, product_id, user_id, sales_amount
from online_sale
where sales_date like '2022-03%'
select date_format((sales_date), '%Y-%m-%d') as sales_date, product_id, null, sales_amount
from offline_sale
where sales_date like '2022-03%'
  1. 두 테이블을 UNION으로 합친다. 이때, 두 테이블의 컬럼이 동일해야 하므로, offline_sale 테이블의 user_id는 null 처리한다.
select date_format((sales_date), '%Y-%m-%d') as sales_date, product_id, user_id, sales_amount
from online_sale
where sales_date like '2022-03%'
union
select date_format((sales_date), '%Y-%m-%d') as sales_date, product_id, null, sales_amount
from offline_sale
where sales_date like '2022-03%'
order by sales_date asc, product_id asc, user_id asc;

[Día de hoy]

오늘부터 프로젝트가 시작되었다.
우리 팀의 프로젝트는 일본항공 항공 데이터셋을 활용하여,
고객 특성별 서비스 만족도를 분석한 뒤, CRM전략을 수립하는 것이다.
어려울 것이라고 겁먹었지만, 팀원분들과 열심히 의견을 주고 받으면서
어느정도 프로젝트의 틀도 잡히고 할 수 있겠다는 자신감도 생겼다!
프로젝트 빡시게 해봐야겠다!

매일 코드카타는 진행하고 있지만 이렇게 TIL로 정리하는게 중요한 것 같다.
바쁘다는 핑계로 TIL작성을 미루곤 하는데.. 그래도 이렇게 짬이 날땐 꼭 써야겠다!

내일도 화이팅!

profile
First time, Last time, Every time.

0개의 댓글