In this section, calculations were performed based on the metrics specified above using the relevant databases, and the results obtined were interpreted and visualized. A database has been created in MySQL Lite, and the CSV file obtained from the previous study has been uploaded there, with operations performed in this environment, and the SQL script file used for this section can be found here .
SELECT *
FROM final_games_dataset;
Upon evaluating the obtained results, it is observed that there is a significant increase in MRR from January to December. This increase was more pronounced in the early months of the year, while a slight decrease was noted in the later months.
SELECT
payment_month,
SUM(total_revenue) AS mrr
FROM
final_games_dataset
GROUP BY
payment_month
ORDER BY
payment_month;
Upon examining the obtained results, it was observed that, similar to the previous query, the number of new users increased by nearly 4.5 times from the beginning to the end of the year. However, while a rapid increase in user numbers was seen in the early months of the year, a slight decrease was noted toward the later months.
SELECT
payment_month,
COUNT(DISTINCT user_id) AS paid_users
FROM
final_games_dataset
GROUP BY
payment_month
ORDER BY
payment_month;
Upon examining the obtained data, it was observed that the ARPPU value reached its lowest point in January (34.66) and its highest point in February (49.32). It exhibited a relatively stable trend for the remainder of the year, fluctuating between 43 and 46.
SELECT
payment_month,
ROUND( SUM(total_revenue) / COUNT(DISTINCT user_id), 2 ) AS arppu
FROM
final_games_dataset
WHERE
total_revenue > 0
GROUP BY
payment_month
ORDER BY
payment_month;
When examining the results, no clear pattern is observed, while the number of new player registrations has shown a decline on a yearly basis.
SELECT
payment_month,
COUNT(DISTINCT user_id) AS new_paid_users
FROM
final_games_dataset
WHERE
status = 'new'
GROUP BY
payment_month
ORDER BY
payment_month;
When examining the results, similar to the previous query, no clear pattern is observed, but a decreasing trend in revenue from new players is noted throughout the year.
SELECT
payment_month,
ROUND( SUM(total_revenue)) AS new_mmr
FROM
final_games_dataset
WHERE
status = 'new'
GROUP BY
payment_month
ORDER BY
payment_month;
Upon examining the results, an increase in the number of players abandoning the game each month was observed. When reviewing the relevant graph, a significant spike is noted in the most recent data. However, since this pertains to the last month's data, it appears this way due to a calculation error and should not be considered in the evaluation.
SELECT
payment_month,
COUNT(DISTINCT user_id) AS churned_users
FROM
final_games_dataset
WHERE
status = 'churn'
GROUP BY
payment_month
ORDER BY
payment_month;
In this query, CTEs are utilized to determine the number of users from the previous month and the number of churned users in the current month, and the query is structured based on this foundation.
The churn rate remained stable throughout the year but showed an increase in the last two months.
WITH paid_users AS (
SELECT
payment_month,
COUNT(DISTINCT user_id) AS paid_users
FROM
final_games_dataset
WHERE
total_revenue > 0
GROUP BY
payment_month
),
churned_users AS (
SELECT
payment_month,
COUNT(DISTINCT user_id) AS churned_users
FROM
final_games_dataset
WHERE
status = 'churn'
GROUP BY
payment_month
)
SELECT
c. payment_month,
ROUND( CAST(c.churned_users AS REAL) / (p.paid_users), 2 ) AS churn_rate
FROM
churned_users AS c
LEFT JOIN
paid_users AS p
ON
c.payment_month = date(p.payment_month, "+1 month")
GROUP BY
c.payment_month
ORDER BY
c.payment_month;
As with the previous queries, the number of churned users has increased, and the revenue loss due to players abandoning the game has also shown a month-to-month increase.
SELECT
payment_month,
ROUND( SUM(total_revenue_previous)) AS churn_rate
FROM
final_games_dataset
WHERE
status = 'churn'
GROUP BY
payment_month
ORDER BY
payment_month;
WITH mrr AS (
SELECT
payment_month,
SUM(total_revenue) AS mrr
FROM
final_games_dataset
GROUP BY
payment_month
),
churned_revenue AS (
SELECT
payment_month,
SUM(total_revenue_previous) AS churned_revenue
FROM
final_games_dataset
WHERE
status = 'churn'
GROUP BY
payment_month
)
SELECT
c.payment_month,
ROUND((c.churned_revenue / m.mrr), 2 ) AS Revenue_churn_rate
FROM
churned_revenue AS c
LEFT JOIN
mrr AS m
ON
c.payment_month = date(m.payment_month, '+1 month')
GROUP BY
c.payment_month
ORDER BY
c.payment_month;
In this query, which calculates the revenue increase due to the rising monthly payment amounts from users already paying for the game, a general upward trend is observed throughout the year, although it is not entirely consistent.
SELECT
payment_month,
ROUND(SUM(total_revenue - total_revenue_previous)) AS expansion_mrr
FROM
final_games_dataset
WHERE
status = 'active'
AND
total_revenue > total_revenue_previous
GROUP BY
payment_month
ORDER BY
payment_month;
In this query, which examines the revenue decrease due to the reduction in monthly payment amounts from users already paying for the game, an increase in revenue reduction is observed on an annual basis.
SELECT
payment_month,
ROUND(SUM(total_revenue - total_revenue_previous)) AS contraction_mrr
FROM
final_games_dataset
WHERE
status = 'active'
AND
total_revenue < total_revenue_previous
GROUP BY
payment_month
ORDER BY
payment_month;