Hi, it’s slightly more complicated, but in standard (TimescaleDB) SQL it looks something like this:
WITH subquery AS (
SELECT
time_bucket('1m', time) AS time_interval,
interface,
AVG(bytes_recv) *8 AS RX,
AVG(bytes_sent) *8 AS TX
FROM "net_default"
WHERE host = 'ad2rm1'
AND interface = 'bond0'
AND time BETWEEN '2024-01-14T08:29:00.702Z' AND '2024-01-15T08:29:00.702Z'
GROUP BY time_interval, interface
ORDER BY time_interval
)
SELECT
interface,
time_interval,
GREATEST(0,(RX - lag(RX) OVER (PARTITION BY interface ORDER BY time_interval))) / EXTRACT(EPOCH FROM ('1m'::interval)) AS RX,
GREATEST(0,(TX - lag(TX) OVER (PARTITION BY interface ORDER BY time_interval))) / EXTRACT(EPOCH FROM ('1m'::interval)) AS TX
FROM subquery
ORDER BY time_interval;