下面是一个示例代码,用于编写SQL查询以计算按30分钟间隔列出的能耗读数,并按日期时间戳和电表序列号降序排序。
SELECT
DATE_FORMAT(timestamp, '%Y-%m-%d %H:%i') AS interval_start,
DATE_FORMAT(DATE_ADD(timestamp, INTERVAL 30 MINUTE), '%Y-%m-%d %H:%i') AS interval_end,
meter_serial_number,
SUM(energy_reading) AS total_energy_reading
FROM
energy_reading_table
GROUP BY
DATE_FORMAT(timestamp, '%Y-%m-%d %H:%i') DIV 30,
meter_serial_number
ORDER BY
interval_start DESC,
meter_serial_number DESC;
在上述代码中,首先使用DATE_FORMAT
函数将时间戳格式化为所需的日期时间格式(例如:'%Y-%m-%d %H:%i')。然后,使用DATE_ADD
函数将时间戳增加30分钟,以获取下一个时间间隔的结束时间。接下来,使用SUM
函数计算每个时间间隔内的能耗读数的总和。然后,使用GROUP BY
子句按30分钟间隔和电表序列号进行分组。最后,使用ORDER BY
子句将结果按日期时间戳和电表序列号降序排序。