반응형

SQL 4

sql lag, lead 함수로 이전행과 다음행 조회하기

lag, lead라는 영어 단어의 뜻 그대로 이전 또는 이후 행의 데이터를 현재의 행과 함께 조회할 수 있는 기능을 제공하는 함수이다. 대부분 sql db에서 지원하는 기능이면 본문에서는 Postgresql을 기준으로 문법을 쓰고 설명하도록 하겠다. 함수로 해결할 수 있는 문제 (order by) 아주 자주 쓰이는 함수는 아니긴 하지만 그래도 lag, lead 함수를 쓰면 복잡하게 만들어야 하는 쿼리를 한줄로 간단하게 끝낼수 있다. 특히 이전 행의 값과 현재 값을 비교하거나 계산해야할 때 쓰면 유용하다. 예를들어 아래와 같은 테이블이 존재한다고 가정해보자. 김정호라는 사람의 5일 전 소비 값과 현재 소비값을 비교해서 값이 오른 행만 추출하고 싶다면 어떻게 해야할까? 머리속이 복잡해지지만, lag함수를 사..

[구글시트] 쿼리(query) 함수 이용해서 데이터 select하기

구글 스프레드 시트를 사용하다보면 선택하고 싶은 데이터에 자유롭게 조건을 걸어서 선택하고 싶은데, if함수는 다중 컬럼에 조건을 거는것이 쉽지 않기 때문에 sql에서 하는 것 처럼 쿼리로 데이터를 추출해서 시트에 뿌려주고 싶은 생각이 들때가 많습니다. 구글 스프레드시트는 다행히도 쿼리 함수 기능을 지원하는데요, 문법도 sql에서 쓰는 select from where의 구조랑 크게 다르지 않아서 편하게 사용할 수 있습니다. 제가 arrayformula와 함께 구글시트에서 가장 유용하게 사용하는 기능 중 하나입니다. 구글시트 쿼리함수 기본 문법 쿼리함수의 인자로 범위, 쿼리, 헤더포함여부 3가지가 들어가며, 컬럼의 선택은 열 기호인 A,B,C,... 를 사용하면 됩니다. 아래 예제를 보면 C2:H29는 내가..

sql 서브쿼리 활용하기(쿼리 중첩해서 사용하는 방법)

서브쿼리(sub query)는 말 그대로 쿼리 안에 쿼리가 들어가있는 형태를 말한다. 서브쿼리는 SELECT, FROM, WHERE, HAVING 등 쿼리문 어디에도 들어갈 수 있으며 서브쿼리를 잘 활용하면 아주 꽤 많은 문제를 쉽게 해결할 수 있다. 서브쿼리와 메인쿼리(main query)의 관계에 따라서 Non-correlated 서브쿼리와 correlated 서브쿼리로 나눠서 생각할 수도 있는데 이는 서브쿼리를 더 잘 활용하기 위한 개념상의 구분 정도로 생각하면 된다. SELECT 절 서브쿼리 사용 다음과 같은 2개의 예제 테이블이 있다. 하나는 vendor에 대한 정보가 담긴 테이블이고 다른 하나의 테이블은 invoice에 대한 정보가 담긴 테이블이다. 이 두 테이블은 vendor_id로 연결되어..

sql 셀프조인(self join) 쿼리 쓰는 이유와 간단한 예제

sql 쿼리를 짜다보면 다른 테이블을 병합해서 데이터간의 관계를 봐야하는 경우도 있지만 한 테이블 내에서 데이터간의 관계를 살펴봐야 하는 경우도 발생하게 된다. 즉 한 테이블에 존재하는 컬럼(column) 사이에 의미있는 관계가 존재할 때 셀프조인을 이용해서 효과적으로 보여줄 수 있게 된다. 셀프조인 쿼리 작성방법 셀프조인에도 inner join, outer join, cross join 등 모든 조인쿼리(Join Query)가 적용 가능하다. 일반적인 조인 문과 다른점은 join하는 대상이 자기 자신이라는 점이다. 한가지 주의해야 할 점은 같은 테이블 이름이 2번 나오기 때문에 반드시 alias를 지정해줘야 한다는 점이다. 기본적인 셀프조인 쿼리 형태는 아래 예시와 같이 작성할 수 있다. 결과로는 중복..

반응형