SQL拼接语法,怎么拼接时间

现有一个表EQP_TRANS_ODS
会记录机台状态,
机况种类:IDLE/DOWN/RUN,
有Start_time,END_TIME,KEEP_TIME;
但是这个表有个问题,每天07:30,会自动截断重新生成一行数据,
例如机况Run时间为Start_time:6:00至End_time:9:00,
到7:30截断,会显示两行,
显示为
Run 6:00-7:30 keep_time:1.5 hr,
Run 7:30-9:00 keep_time:1.5 hr ,怎么通过SQL语法将两行字段,拼接为一行 6:00-9:00 keep_time:3 hr

比如当前测试表数据如下:

img

查询效果如下:

img

对应测试DDL语句:

CREATE TABLE `eqp_trans_ods` (
  `id` int(11) DEFAULT NULL,
  `type` varchar(24) DEFAULT NULL,
  `Start_time` time DEFAULT NULL,
  `END_TIME` time DEFAULT NULL,
  `KEEP_TIME` float(2,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对应测试DML语句:

-- ----------------------------
-- Records of eqp_trans_ods
-- ----------------------------
INSERT INTO `eqp_trans_ods` VALUES (1, 'IDLE', '06:00:00', '07:30:00', 1.5);
INSERT INTO `eqp_trans_ods` VALUES (2, 'IDLE', '07:30:00', '09:00:00', 1.5);
INSERT INTO `eqp_trans_ods` VALUES (3, 'DOWN', '05:00:00', '07:30:00', 2.5);
INSERT INTO `eqp_trans_ods` VALUES (4, 'DOWN', '07:30:00', '09:00:00', 1.5);
INSERT INTO `eqp_trans_ods` VALUES (5, 'RUN', '08:00:00', '10:30:00', 2.5);
INSERT INTO `eqp_trans_ods` VALUES (6, 'RUN', '10:30:00', '14:30:00', 4.0);

效果执行语句:

SELECT
    a.type,
    -- min( a.Start_time ) Start_time,
    date_format(min(Start_time),'%H:%i') Start_time, -- 取值开始时间 最小值
    -- 显示小时和分钟 -- 格式显示日期/时间数据参考:https://www.w3school.com.cn/sql/func_date_format.asp
    -- max( a.END_TIME ) END_TIME,
    date_format(max(END_TIME),'%H:%i') END_TIME, -- 取值最大时间 结束时间
    sum( a.KEEP_TIME ) KEEP_TIME ,  -- 求和累计
    concat(type,' ',date_format(min(Start_time),'%H:%i'),'-',date_format(max(END_TIME),'%H:%i'),' keep_time',':',sum( a.KEEP_TIME ),' hr') printResult  -- 拼接结果
FROM
    EQP_TRANS_ODS a 
GROUP BY
    a.type 
ORDER BY
    a.type DESC;