-
프로젝트를 하면서 집계된 식를 다룰 때 항상 오류가 난다.
예를 들어, 날짜 매개 변수(통치 p.Date)를 만들어서 우리가 원하는 날짜를 컨트롤 한다고 가정하자.
우리의 대시보드가 월별로 보는 대시 보드라면, p.Date가 월별로 동적으로 변할 것이고,
우리가 지정한 Metric 또한 동적으로 바뀌게 될 것이다.
그러나 늘 나의 근처에는 문제가 발생한다.
매개 변수가 동적으로 움직이는데 Metric은 전체 Date에 대해서 결과가 집계가 된다.
1. 집계된 식을 구성할 때 각각의 조건이 전체 식으로 구성이 된 경우
➡️ 말을 어렵게 썼지만 생각보다 간단하다.
"자. 우리가 이번 달( 2024.06)의 어떤 사이트의 이용자 수를 보고 싶다." 라고 가정을 하자
그럼 우리는 이번 달에 해당하는 유저의 수만 구하면 될 것이다.
수식으로 간단하게 표현하면
COUNTD(이용자 수) ➡️ 전체 유저에 대한 수를 세어버린 것. (X)
이번 달이라는 조건이 붙은 COUNTD(이용자 수)를 만들어야 한다.
COUNTD( IF p.Date = Date THEN 이용자 수 END) 이와 같이 쓸 수 있다.
COUNTD()를 바깥에 써준 이유는 IF문의 특징 때문이다.
IF문의 형식을 보면 다음과 같다.
IF <식> 에서 <식>의 데이터 형태가 Boolean값이 나와야 한다.
즉, True, False가 나오는 식이 들어가야 한다.
THEN <해당하는 경우>에는 조건이 붙는다
1. IF 문의 <식>이 집계된 식이 경우
이 경우는 해당하는 경우나 식에 집계된 식 (MAX, MIN, COUNTD, COUNT, SUM) 등,
보통 Group By를 했을 때를 생각하면 된다.
EX) IF MAX(p.Date = Date) THEN COUNTD(이용자 수) END
MAX를 쓴 이유는 COUNTD가 THEN 이후에 집계된 식이 존재하기 때문
2. 최종적으로 원하는 IF문의 결과가 집계된 식인 경우
COUNTD(IF p.Date = Date THEN 이용자 수 END)를 하면 된다.
그러나 이렇게 간단한 식만 짜는게 아니기 때문에 우리는 수식들을 자세히 볼 필요가 있다.
집계된 식을 다시 집계를 하는 경우,
집계된 식을 이용해서 다른 집계식을 짜는 경우 등,
만들어 놓은 계산 식을 활용하여 이어가기 때문에 어떤 조건을 걸 때에는 가장 상위 식부터 조정을 해나가야 한다.
내가 직면한 문제는 다음과 같았다.
이번 달과 저번 달의 인구 수, 매출을 비교하고 싶어.
그러면 이번 달 , 저번 달에 해당하는 필터가 존재 해야하고,
이 필터가 해당하면 그때의 인구 수가 필요하다.
근데 이 인구가 어떤 집계식으로 된 인구 수라고 하면 우리는 생각을 해야한다.
집계된 인구 수를 구하려면 집계된 식에다가도 필터를 먹어야 한다.
'스파르타 > TIP' 카테고리의 다른 글
2/2 (1) 2024.02.05 프로그래머스_즐겨찾기가 가장 많은 식당 정보 출력하기 (1) 2023.11.30 프로그래머스 - 루시와 엘라 찾기 (0) 2023.11.29 MYSQL 소소한 팁 (2) 2023.11.28