问题描述
- 一个纠结的sql分组查询语句
-
是这样的 数据库里有一张
宿舍用电表(宿舍号,时间,电表度数)
dormitoryElectric(dormitory,time,electric)
里面存的是每个小时电表上的度数,那我想查询所有宿舍近7天的每天用电度数要怎么写。
效果大概是这样的:
宿舍1 第一天用电度数 第二天用电度数 第三天用电度数 。。。
宿舍2 第一天用电度数 第二天用电度数 第三天用电度数 。。。
第二天用电度数应该是第二天的最后一次电表度数减去第一天的最后一次电表度数
解决方案
oracle的写法, mysql也有case when的表达式
Select t.Dormitory,
Sum(Case
When t.Time >= Trunc(Sysdate) - 2 And t.Time < Trunc(Sysdate) - 1 Then
t.Electric
Else
0
End) day2ago,
Sum(Case
When t.Time >= Trunc(Sysdate) - 1 And t.Time < Trunc(Sysdate) - 0 Then
t.Electric
Else
0
End) day1ago
From Dormitoryelectric t
Group By t.Dormitory
解决方案二:
一个值得纪念的SQL查询语句
解决方案三:
oracle的写法, mysql也有case when的表达式
Select t.Dormitory,
Sum(Case
When t.Time >= Trunc(Sysdate) - 2 And t.Time < Trunc(Sysdate) - 1 Then
t.Electric
Else
0
End) day2ago,
Sum(Case
When t.Time >= Trunc(Sysdate) - 1 And t.Time < Trunc(Sysdate) - 0 Then
t.Electric
Else
0
End) day1ago
From Dormitoryelectric t
Group By t.Dormitory
解决方案四:
在@寒心孤瞳 的基础下已经完成 谢谢大家
时间: 2024-08-03 21:44:49