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