일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- pandas
- 크롤링
- 전처리
- 데이터 분석
- Python
- 프롬프트 엔지니어링
- 태블로
- 머신러닝
- 시각화
- cross join
- 히트맵
- SQL
- 기초통계
- jd
- Chat GPT
- If
- 최종 프로젝트
- 클러스터링
- lambda
- da
- streamlit
- 기초프로젝트
- SQLD
- GA4
- 데이터분석
- 서브쿼리
- 군집화
- data analyst
- 프로젝트
- 팀프로젝트
Archives
- Today
- Total
세조목
SQL 정리(self join)(23.12.22) 본문
https://leetcode.com/problems/rising-temperature/
금일 풀었던 예제다.
문제에서 요구하는건 금일의 온도가 전일보다 높은 id를 찾으라는 것이다.
온도가 높은지 낮은지 판단하려면 비교 대상이 있어야 하는데 같은 컬럼에서 어떻게 비교할 수 있을까??
지금까지 학습한 내용 중에서는 같은 컬럼에 속한 값들을 비교할 수 있는 문법은 없었다.
그래서 방법을 찾아보니 같은 테이블을 하나 더 join하는 식으로 비교 대상을 만들 수 있었다.
무슨 말인고하니
이렇게 테이블이 하나 있는데
기존에 있던 테이블을 그대로 옆에다가 붙이는 것이다.
이것을 SELF JOIN 기능이라고 한다.
LEFT(or RIGHT) JOIN 또는 INNER JOIN의 경우 합칠때 문법이 아래와 같은데
더보기
테이블1 AS 별명1 JOIN 테이블2 AS 별명2 ON 별명1.컬럼명1 = 별명2.컬럼명2
SELF JOIN의 경우
더보기
테이블명 별명1, 테이블명 별명2
이렇게만 적어주면 된다.
그래서 위 문제의 경우
- SELF JOIN 기능을 사용해서 테이블을 합쳐주고
- WHERE 절에서 조건을 지정해주면 간단하게 문제가 풀린다.
WHERE절에는
더보기
DATEDIFF(별명1.recordDate, 별명2.recordDate) = 1 and 별명1.temperature > 별명2.temperature
이 조건을 넣어주면 된다.
별명1에 해당하는 테이블이 오늘에 해당하는 테이블이 되는 것이고,
별명2에 해당하는 테이블이 어제에 해당하는 테이블이 되는 것이다.
'데이터 분석 공부 > SQL' 카테고리의 다른 글
SQL 정리(STR_TO_DATE, SQL 실행 순서, 데이터 삭제)(23.12.29) (1) | 2023.12.30 |
---|---|
SQL 정리(Join - cross, left)(leetcode - 1280. Students and Examinations)(23.12.28) (1) | 2023.12.27 |
SQL 정리(Cross Join)(23.12.26) (0) | 2023.12.26 |
SQL 정리(is와 null, 서브쿼리, char_length)(23.12.20) (0) | 2023.12.20 |
SQL 예제 정리(23.12.18) (0) | 2023.12.18 |