TIL_[SQL] SELF JOIN

김희정·2023년 12월 29일

TIL

목록 보기
22/57
post-thumbnail

Rising Temperature

Q. 어제보다 기온이 더 높은 id를 가져오시오.
Input: 
Weather table:
+----+------------+-------------+
| id | recordDate | temperature |
+----+------------+-------------+
| 1  | 2015-01-01 | 10          |
| 2  | 2015-01-02 | 25          |
| 3  | 2015-01-03 | 20          |
| 4  | 2015-01-04 | 30          |
+----+------------+-------------+
Output: 
+----+
| id |
+----+
| 2  |
| 4  |
+----+

datediff 함수로 각자 다른 컬럼에서의 시간차는 구해봤지만,
한 컬럼에 있는 데이터들을 어떻게 분리하지? 에서 잠깐 막혔었다.

그러다 self join을 해서 recordDate를 두개를 만들어 놓고 비교하는게 생각났다.

  1. 직전 일과 비교해야 하니 datediff = 1
  2. 기온이 더 높아야 함

위 1,2를 and로 묶으니 정답이었다.

select a.id
from weather a, weather b
where datediff(a.recorddate, b.recorddate) = 1 and a.temperature > b.temperature

오늘은 개인과제 csv 파일 옮기다 오전 시간이 다 갔다.
디비버에서 안먹혀서, workbench로 import를 해서 문제를 풀고
ERD를 대충 그려보고,,,
그래도 뭔가 디비버가 더 편한것 같아서 디비버로 다시 돌아갔다.

처음에는 디비버에 csv 파일 넣는 방법을 몰라서 헤맸는데, 알고보니 나는 mysql 로컬 서버를 이미 가지고 있어서 서버 비밀번호만 입력했으면 자동으로 연동되는 거였다.. ㄱ-

이렇게 또 새로운걸 알아간다... 🥹

profile
데이터 애널리스트가 되고 싶은

0개의 댓글