https://www.youtube.com/watch?v=Uyz-bJkBOXA

CREATE TABLE activity (
    player_id INT,
    device_id INT,
    event_date DATE,
    PRIMARY KEY (player_id, event_date)
);

INSERT INTO activity (player_id, device_id, event_date) VALUES
(1, 2, '2024-12-01'),
(1, 2, '2024-12-02'),
(2, 3, '2024-12-05'),
(3, 1, '2024-12-07'),
(3, 4, '2024-12-09');

Pasted image 20260107165147.png

WITH

WITH CTE AS 
(
SELECT 
	player_id,
    event_date,
    day(event_date) - ROW_NUMBER() OVER (PARTITION BY player_id ORDER BY event_date ASC) AS Grp -- OR USE DATEDIFF() WITH LEAD
FROM activity
), 
CTE2 AS (
SELECT 
	COUNT(distinct player_id) AS Consq_players
FROM CTE
GROUP BY grp
HAVING COUNT(grp) >= 2
),
CTE3 AS (
SELECT 
	COUNT(distinct player_id) AS Total_Players
FROM activity
)

SELECT
	Consq_Players,
    Total_Players,
	ROUND((Consq_players / Total_Players)*100,2) AS Percentage
FROM CTE3,CTE2

Pasted image 20260107165239.png