add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE `sum_date_diff` (
`id_` int DEFAULT NULL,
`date_time` text,
`p1_id` int DEFAULT NULL,
`p2_id` int DEFAULT NULL,
`sum_date_diff` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `sum_date_diff` VALUES (1,'2000-01-01',1,2,NULL),(2,'2000-01-02',2,4,NULL),(3,'2000-01-04',1,3,NULL),(4,'2000-01-07',2,5,NULL),(5,'2000-01-15',2,3,NULL),(6,'2000-01-20',1,3,NULL),(7,'2000-01-31',1,3,NULL);
SELECT * FROM sum_date_diff
id_ date_time p1_id p2_id sum_date_diff
1 2000-01-01 1 2 null
2 2000-01-02 2 4 null
3 2000-01-04 1 3 null
4 2000-01-07 2 5 null
5 2000-01-15 2 3 null
6 2000-01-20 1 3 null
7 2000-01-31 1 3 null
UPDATE sum_date_diff AS sdd0
JOIN
(SELECT
id_,
SUM(DATEDIFF(sdd1.date_time, sq.date_time)) AS sum_date_diff
FROM
sum_date_diff AS sdd1
LEFT OUTER JOIN (SELECT
sdd2.date_time AS date_time, sdd2.p1_id AS player_id
FROM
sum_date_diff AS sdd2 UNION ALL SELECT
sdd3.date_time AS date_time, sdd3.p2_id AS player_id
FROM
sum_date_diff AS sdd3) AS sq ON sq.date_time < sdd1.date_time
AND sq.player_id = sdd1.p1_id
GROUP BY sdd1.id_) AS master_sq ON master_sq.id_ = sdd0.id_
SET
sdd0.sum_date_diff = master_sq.sum_date_diff
SELECT * FROM sum_date_diff
id_ date_time p1_id p2_id sum_date_diff
1 2000-01-01 1 2 null
2 2000-01-02 2 4 1
3 2000-01-04 1 3 3
4 2000-01-07 2 5 11
5 2000-01-15 2 3 35
6 2000-01-20 1 3 35
7 2000-01-31 1 3 68