728x90
https://sgwanlee.medium.com/sql-로-간단히-증감율-데이터를-얻는-방법-4190290771b9
[SQL 데이터분석] 증감율 구하는 간단한 방법
sql에서는 = 등호가 비교연산자로 사용됩니다. 대신 := 이렇게 콜론(:)과 등호(=)를 같이 쓰면 대입연산자로 쓸 수 있어요.
sgwanlee.medium.com
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 형태로 증감율을 구했는데