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 在你的基础上我做了写修改完成了,谢谢
2 年多之前 回复
zui2jun
zui2jun 每一小时记录一次电表度数
2 年多之前 回复
zui2jun
zui2jun 请问要如何解答
2 年多之前 回复
zui2jun
zui2jun 你这个是把每天电表的度数给累加了显示。 我要的是差值,也就是说如果昨天是432 今天是433,那么昨天就用了1度电
2 年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
sql分组查询语句
select type,sum(stat_count) as stat_count from t_stat_day_type where stat_time>='$start' and stat_time<'$end' $where1 and type in ($search) GROUP BY type
Hibernate中的sql语句中使用分组查询
今天在写代码时需要用到分组查询,对于查询结果的获取有点不明白, 1.我的应用场景:   优化一个分组查询    数据库里面有一张表message(故障表),包括的字段有message_id(故障编码),app_id(项目编码),msg_status(故障状态:0表示未处理,1表示进行中,2表示已完成,3表示未派发, 4表示已派发);还有一张表message_user(人员表),包括的字段有me
Oracle分组查询结果SQL语句
CREATE TABLE t_test AS SELECT '名称1' as t_name,to_date('2011-11-18','YYYY-MM-DD') as t_bdate,to_date('2012-10-01','YYYY-MM-DD') as t_edate,'Y' as t_flag from dual union all SELECT '名称2' as t_name,t
SQL语句:查询出每个分组的前若干条记录
如表T内容如下:month sale   1       10   1       20   1       30   1       40   2       10   2       20   2       30   2       40要求:查询出每个月前三条的销售记录 select * from T as a where sale in (
多条件查询 分组 分页的sql语句
目前只发现一种实现方法是 先更具条件 ,分组查询出所有数据 存放到临时表中,然再从临时表中 读书具体 sql语句如下: 读出数据插入临时表:CREATE TABLE #T ( T_ID INT IDENTITY(1,1) PRIMARY KEY, WPROJ_ID INTEGER,PROJ_NAME NVARCHAR(255),WRES_ID INTEGER,
SQL语句聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计算列的最小值 首先,创建数据表如下: 执行列、行计数(count): 标准格式 SELECT COUNT(计数规范>) FROM
sql分组统计语句
sql分组统计语句(转载)sql分组统计语句     1.报表合计专用的Rollup函数         销售报表  广州     1月      2000元  广州     2月      2500元  广州                 4500元  深圳     1月      1000元  深圳     2月      2000元  深圳                 30
sqlServer 聚集函数 和 分组查询
聚集函数:     sum函数 sum函数用于计算查询表中指定字段中所有 记录值的总和。 语法:sum(exp) 说明:该函数不计算包含Null 值的字段。 例:SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的 population字段上,结果就是该查询只返回 一个结果,即所有国家的总人口数。 avg函数 Avg函数是用来计算特
分页 分组等Linq查询语句例子
<br /><br />分页<br /> <br />描述:按照每页10条记录,查询第二页的顾客<br />查询句法:<br /><br />  var分页= (from c in ctx.Customers select c).Skip(10).Take(10);<br />对应SQL:<br /><br />SELECT TOP 10 [t1].[CustomerID], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].
mybatis 动态sql 多表分组查询
废话不多说直接上例子: SELECT b.props_and_uses_name as propsAndUsesName, COUNT(*) as constructionNumbers, COUNT(b.building_area) as constructionTotalArea FROM tb_construction_info c LEFT JOIN t