How to fill missing values in aggregate-by-time function

Use recursive CTE (available in MariaDB starting from 10.2.2) and generate base calendar table:

WITH RECURSIVE
cte AS ( SELECT @timestart timestart, @timestart + 300 timeend
         UNION ALL
         SELECT timestart + 300, timeend + 300 FROM cte WHERE timeend < @timeend)
SELECT cte.timestart, 
       COALESCE(MIN(value), 0) min_value, 
       COALESCE(AVG(value), 0) avg_value, 
       COALESCE(MAX(value), 0) max_value
FROM cte
LEFT JOIN example ON example.clock >= cte.timestart
                 AND example.clock < cte.timeend
GROUP BY cte.timestart;

https://dbfiddle.uk/?rdbms=mariadb_10.3&fiddle=f5c41b7596d56f1d7babe075f19302ec