Вы можете попробовать что-то вроде ниже,
DROP TABLE IF EXISTS groupTime ;
CREATE TABLE groupTime (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
startFrom DATETIME(3),
endOn DATETIME(3),
gateway CHAR(1),
broadcast VARCHAR(8)
);
INSERT INTO groupTime (startFrom,endOn,gateway ,broadcast)
VALUES
('2018-09-01 23:41:24.024','2018-09-01 23:45:24.028','A','X01'),
('2018-09-01 23:41:24.025','2018-09-01 23:45:24.032','A','X01'),
('2018-09-01 23:41:24.026','2018-09-01 23:45:24.028','B','X01'),
('2018-09-01 23:41:24.030','2018-09-01 23:45:24.045','C','X01'),
('2018-09-01 23:41:24.029','2018-09-01 23:41:24.784','B','X02'),
('2018-09-01 23:41:24.025','2018-09-01 23:45:24.038','A','X01');
SELECT a.gateway, a.startfrom, a.endOn , TIMESTAMPDIFF(MICROSECOND , a.startfrom, a.endOn) FROM groupTime a
INNER JOIN (
SELECT MIN(id) AS id FROM groupTime WHERE broadcast='X01' GROUP BY gateway
)AS b
ON a.id = b.id
Демо