SQL语句:
WITH TEMP AS (select DATE_FORMAT((NOW() + interval (cast(`mysql`.`help_topic`.`help_topic_id` as signed) - 24) hour),
'%Y-%m-%d %H:00:00') AS MHOUR
from `mysql`.`help_topic`
having (MHOUR < DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00'))
order by MHOUR),
DETAIL AS (SELECT DATE_FORMAT(invoke_at, '%Y-%m-%d %H:00:00') AS invokeAt,
max(cost) AS maxMills,
min(cost) AS minMills,
avg(cost) AS avgMills,
COUNT(*) AS invokeCount,
sum(IF(status = '0', 1, 0)) AS successCount,
sum(IF(status = '1', 1, 0)) AS failCount
FROM api_invoke_detail ad
WHERE ad.tenant_id = 10222000008
and ad.invoke_at >= '2023-10-24 17'
GROUP BY invokeAt
ORDER BY invokeAt)
SELECT TEMP.MHOUR as groupTime,
DETAIL.maxMills,
DETAIL.minMills,
DETAIL.avgMills,
DETAIL.invokeCount,
DETAIL.successCount,
DETAIL.failCount
FROM DETAIL
RIGHT JOIN TEMP ON TEMP.MHOUR = DETAIL.invokeAt;
结果: