BEGIN
/***************start**********************/
INSERT INTO flow_statistic (
idx, ipaddr1, ipaddr2, port1, port2, proto, protocol,
down_bytes, up_bytes, flow, packet,
up_rate, down_rate, packet_rate, updatetime
)
SELECT
idx, ipaddr1, ipaddr2, port1, port2, proto, protocol,
SUM(down_bytes) as down_bytes, SUM(up_bytes) as up_bytes, SUM(flow) as flow, SUM(packet) as packet,
up_rate, down_rate, packet_rate, updatetime
FROM flow
GROUP BY idx
ORDER BY updatetime DESC;
/***************end**********************/
/****************Merge the original data and new data of the flow_statistic table ************************ **/
/***************start**********************/
INSERT INTO flow_statistic (
idx, ipaddr1, ipaddr2, port1, port2, proto, protocol,
down_bytes, up_bytes, flow, packet,
up_rate, down_rate, packet_rate, updatetime
)
SELECT
idx, ipaddr1, ipaddr2, port1, port2, proto, protocol,
SUM(down_bytes) as down_bytes, SUM(up_bytes) as up_bytes, SUM(flow) as flow, SUM(packet) as packet,
up_rate, down_rate, packet_rate, updatetime
FROM flow_statistic
GROUP BY idx
ORDER BY updatetime DESC;
/***************end**********************/
/****************Delete the old data of the flow_statistic table, leaving only the latest statistics ******************** ******/
/***************start**********************/
DELETE fd FROM flow_statistic fd INNER JOIN
(
SELECT aid FROM
(
SELECT f.id as aid, f1.id as bid FROM flow_statistic f LEFT JOIN
(SELECT MAX(id) as id FROM flow_statistic GROUP BY idx ORDER BY id) f1
ON f.id = f1.id
) as res
WHERE bid IS NULL ORDER BY aid
) f2
ON fd.id = f2.aid;
/***************end**********************/
/****************Delete flow table data**************************/
/***************start**********************/
TRUNCATE TABLE flow;
/***************end**********************/
END