[SQL] 데이터 줄세우기 RANK, DENSE_RANK, ROW_NUMBER
·
데이터 엔지니어링/SQL
흔히 쓰이는 ORDER BY 절을 쓸 때 ~ 기준으로 ~ 번째 데이터 가져오기 ! 이런 문제가 나올때는 RANK() OVER() 절을 이용한다. 항상 Order by 와 함께 써야하며 괄호 안에 n 번째에 해당하는 숫자를 넣어주면 된다 1. RANK() 추가로 최근에 나온 다른 변형 모듈도 알아보자 2. DENSE_RANK(), ROW_NUMBER() DENSE_RNAK 는 RANK 와 유사하게 순위를 만드는데 결과가 약간 다르다. 쓰는 방법은 완전 동일함 이렇게 세 개 쿼리로 했을때의 차이점을 데이터를 보면서 알아보자. 우선 세 개 쿼리에서 문법은 공격을 기준으로 내림차순을 정해주었다 먼저 DENSE_RANK 는 공동 순위가 있어도 다음 순위를 뛰어넘지 않는다는 특징이 있다. RANK 의 경우 공동이 ..
[SQL] 서브쿼리
·
데이터 엔지니어링/SQL
1. 서브쿼리란? SQL 에서 서브쿼리란 하나의 쿼리 내에 포함된 또 하나의 쿼리인데, 반드시 괄호 안에 있어야 서브쿼리로 인식된다 SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT, UPDATE, DELETE 문에서 사용 가능하다 2. SELECT 절의 서브쿼리 SELCT 절의 서브쿼리는 스칼라 서브쿼리라고도 부르는데, 반드시 결과값이 하나의 값이어야 한다는 특징이 있다 이런식으로! 다른 테이블에서 하나 더 가져오고 싶은 경우 쓰면 된다. 3. FROM 절의 서브쿼리 FROM 절의 서브쿼리는 인라인 뷰 서브쿼리라고도 하는데, 반드시 결과값이 하나의 테이블이여야 하고, 반드시 별명이 있어야 한다. 이런식으로! 쓸 수 있다. 4. WHERE 절의 서브쿼리 WHERE 서브쿼리..
[SQL] 여러 테이블 한번에 다루기
·
데이터 엔지니어링/SQL
이번에는 테이블들을 집합관계로 표현해 쿼리로 표현하는 방법을 보겠다 1. 합집합 SQL 에서 합집합은 UNION 으로 나타낼 수 있다. 이 때 UNION 은 중복값은 빼고, UNION ALL 은 중복값도 함께 보여준다. 이때 주의할 점이 있는데 쿼리 A 와 쿼리 B 결과값의 개수가 같아야 한다는 것이다 ! 데이터 수가 다른 쿼리 두개에서는 UNION 메서드를 쓸 수 없다 쓰는 방법은 다음과 같이 간단한데, WHERE 문을 쓸거면 UNION 앞에 쓰도록 하자! 이때 ORDER BY 역시 쿼리 A 에서 가져온 컬럼으로만 쓸 수 있다. *만약 UNION 으로 가져왔는데 중복값이 있는 경우! 이 경우는 하나라도 값이 다른 경우 다른 값으로 생각해서 처리했기 때문에 생기는 문제다. 2. 교집합 MySQL 에서는 ..
[SQL] SQL의 여섯가지 조인 방법 + 예제
·
데이터 엔지니어링/SQL
1. 조인 여섯가지 방법 기본적인 조인 방법은 파이썬과 동일! 다만 MySQL 은 outer join 지원을 안 한다고.. (왜..?) 그래서 그냥 Left 한번 Right 한번 해서 합치면 될 듯! - Inner Join 두 데이터 모두에서 겹치는것만 가져오는 개념 -left, right join 왼쪽 오른쪽 기준으로 합치는 개념 -outer join 합집합의 개념 but mysql 인 경우는 이렇게 해결하자 union 을 이용하자 ! 왼쪽 한번 오른쪽 한번 합친 뒤에.. * unioin = 두 쿼리를 합치고 중복은 제외하고 보여주는 것 select * From a Left Join b On a.number = b.number UNION select * From a Right join b On a.nu..
허니비 honeybee
'데이터 엔지니어링/SQL' 카테고리의 글 목록 (3 Page)