2 zui2jun zui2jun 于 2016.04.15 13:31 提问

一个纠结的sql分组查询语句

是这样的 数据库里有一张
宿舍用电表(宿舍号,时间,电表度数)
dormitoryElectric(dormitory,time,electric)
里面存的是每个小时电表上的度数,那我想查询所有宿舍近7天的每天用电度数要怎么写。
效果大概是这样的:
宿舍1 第一天用电度数 第二天用电度数 第三天用电度数 。。。
宿舍2 第一天用电度数 第二天用电度数 第三天用电度数 。。。
第二天用电度数应该是第二天的最后一次电表度数减去第一天的最后一次电表度数

4个回答

u012850795
u012850795   2016.04.15 14:37
已采纳

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
zui2jun
zui2jun 在你的基础上我做了写修改完成了,谢谢
一年多之前 回复
zui2jun
zui2jun 每一小时记录一次电表度数
一年多之前 回复
zui2jun
zui2jun 请问要如何解答
一年多之前 回复
zui2jun
zui2jun 你这个是把每天电表的度数给累加了显示。 我要的是差值,也就是说如果昨天是432 今天是433,那么昨天就用了1度电
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.15 13:42

一个值得纪念的SQL查询语句
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

u012850795
u012850795   2016.04.15 14:36

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
zui2jun
zui2jun   2016.04.15 16:18

在@寒心孤瞳 的基础下已经完成 谢谢大家

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!