[SQL 데이터분석] 증감율 구하는 간단한 방법

티엘엑스(TLX) / 이성관 / 조회수 : 5426

sql에서는 = 등호가 비교연산자로 사용됩니다.

대신 := 이렇게 콜론(:)과 등호(=)를 같이 쓰면 대입연산자로 쓸 수 있어요.


select
@prev := users.id
// @prev 라는 임시변수에 users.id 값을 넣어라.
from users


가입일자로 사용자수를 구해보면, 아래처럼 가입일로 group_by 를 해서 구하죠.


select
date(created_at)  as '가입일'
, count(1)        as '가입자수'
from users
group by 1
order by 1 desc;
//    가입일     |    가입자수
// ---------------------------
//  2017-08-02        100
//  2017-08-01         50


그럼 전일 대비 증감율을 구하려면 어떻게 할까요?


select
date(created_at)  as '가입일'
, @prev           as '전일 가입자수'
, (count(1) - @prev) / @prev as '증감율'
, @prev := count(1) as '가입자수'
from users
group by 1
order by 1 desc;
//    가입일     |    전일 가입자수  |   증감율    |    가입자수
// --------------------------------------------------------
//  2017-08-02         50            1.0           100
//  2017-08-01         50            0             50

증감율을 계산하는 count(1) / @prev까지는 @prev 에 전일 가입자수가 저장되어 있구요.

@prev := count(1) 에서 당일 가입자수로 할당이 됩니다.

저는 := 이 연산자를 알기 전엔 self-join 형태로 증감율을 구했는데

데이터를 가오는 속도는 := 이 연산자가 훨씬 빠른것 같습니다.

다음엔 self-join 으로 증감율을 구하는 법도 한 번 올려볼께요.



#티엘엑스 #TLX #개발 #개발팀 #개발자 #꿀팁 #인사이트 #조언

티엘엑스(TLX) 팀의 팀터뷰 보기

TLX의 스튜디오 사업부를 만나다, 이종현 개발자

기업문화 엿볼 때, 더팀스

로그인

/