写出以下mySQL:表名称:格式化数据,字段有:开始时间,结束时间,交易水量kwh,如果开始时间到结束时间跨小时,交易水量数据给到后一个小时一半水量
时间: 2023-11-14 17:28:42 浏览: 71
下面是使用 MySQL 语法的 SQL 代码:
```sql
SELECT
DATE_FORMAT(start_time, '%Y-%m-%d %H:00:00') AS hour_start_time,
DATE_FORMAT(end_time, '%Y-%m-%d %H:00:00') AS hour_end_time,
SUM(CASE
WHEN DATE_FORMAT(start_time, '%Y-%m-%d %H:00:00') = DATE_FORMAT(end_time, '%Y-%m-%d %H:00:00')
THEN traded_water
ELSE
CASE
WHEN start_time = DATE_FORMAT(start_time, '%Y-%m-%d %H:00:00')
THEN traded_water / 2
ELSE traded_water
END
END) AS traded_water_hourly
FROM
formatted_data
GROUP BY
1, 2
```
其中,`DATE_FORMAT` 函数用于将时间戳格式化为指定的字符串,`CASE WHEN` 语句用于判断开始时间和结束时间是否跨小时,如果跨小时则将交易水量一分为二,最后使用 `SUM` 函数和 `GROUP BY` 语句按小时统计交易水量。
阅读全文