일정 기간 동안 KPI의 평균 델타 변화를 계산합니다.
이 블로그에서는 지난 6개월 동안 기사에 대한 총 방문자 수의 월 평균 증가/감소를 찾아야 하는 유사한 상황에 대해 논의할 것입니다.
(표에는 각 기사에 대한 지난 7개월 동안의 데이터가 포함되어 있습니다.)
╔════════════════╦═══════════════╦═════════════════╗
║ article_id ║ year_month ║ total_visits ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202201 ║ 700 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202202 ║ 1100 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202203 ║ 1200 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202204 ║ 1440 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202205 ║ 4300 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202206 ║ 4500 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 1 ║ 202207 ║ 4100 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 5 ║ 202203 ║ 9800 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 5 ║ 202204 ║ 12000 ║
╠════════════════╬═══════════════╬═════════════════╣
║ 5 ║ 202205 ║ 14000 ║
╚════════════════╩═══════════════╩═════════════════╝
--------------------------------------------------------------
The expected output for the article with ID 1
╔════════════════╦═════════════╗
║ article_id ║ monthly_avg ║
╠════════════════╬═════════════╣
║ 1 ║ 760 ║
╚════════════════╩═════════════╝
이를 해결하는 첫 번째 단계는 모든 기사에 대해 이번 달과 지난 달 간의 방문 수 차이를 계산하는 것입니다. 여기서 LAG라는 특수 기능을 사용할 수 있습니다.
LAG function provides access to a row at a given physical offset that comes before the current row, which means the function gives us the nth last row value of a particular column. It takes at least 2 arguments in this case, first is the column and second is the offset.
LAG 함수를 사용하여 얻은 지난 달 방문에서 이번 달 방문을 빼서 방문 차이를 계산하는 CTE를 만듭니다.
WITH cte_articles
AS (
SELECT article_id
,year_month
,total_visits - (
LAG(total_visits, 1) OVER (
PARTITION BY article_id ORDER BY year_month ASC
)
) AS diff_in_visits
FROM articles
)
이제 어려운 작업이 완료되었습니다. 지난 6개월 간의 데이터만 포함하도록 필터를 추가하지 않은 이유가 궁금하실 것입니다. 지난 6개월의 월간 차이를 계산하려면 7개월의 데이터가 필요하고 LAG 함수가 첫 달 행의 마지막 오프셋 값을 제공하면 null이 되기 때문입니다.
AVERAGE 함수를 사용하여 방문의 평균 차이를 계산할 때 이 null은 무시됩니다.
모든 기사의 평균을 계산합니다.
SELECT article_id
,avg(diff_in_visits) AS monthly_avg
FROM cte_articles
GROUP BY article_id;
이것은 SQL만 사용하여 KPI의 평균 델타 변경을 얼마나 쉽게 계산할 수 있는지 보여줍니다.
Reference
이 문제에 관하여(일정 기간 동안 KPI의 평균 델타 변화를 계산합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sumeet_bansal/calculate-average-delta-change-in-kpis-over-a-period-of-time-3o4g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)