统计每组中最初测量值和最末测量值,并求差

14 篇文章 0 订阅

一直以为对SQL中group by 语句都有畏惧感,主要是用的太少,最近同学让我帮忙写个sql,竟然当时没写出来,挺丢人的,都工作那么就了。

现在我开始认真想了下,总结如下问题及sql语句:

  问题是这样的:

  

 如上图, 统计每个点(或人)中最出测量值和最末测量值,并求差。

效果如下:


首先建表(随便拿以前的表来改的),字段如下:


其中room_id 为主键代表序号,

Waiter_name 就是点名,我这里用人名代替,

Start_time 就是测量时间吧

End_time先别管了,

By1就是测量值。


这里需要将同一张表作为两张表看,做一次联合查询,然后用group by 分组,使用分组要仔细考虑分完的组内的都是那些字段构成的,不要忽略了隐含的字段(连接查询时是做的笛卡尔积运算)

=========================================

select tt.waiter_name 点名,min(tt.start_time)  第一次的测量时间,max(tt.start_time)最后一次的测量时间,min(tt.by1)  第一次测量值,max(tt.by1)  最后一次测量值,max(tt.by1)-min(tt.by1)差值

 from(

select a.room_id,a.waiter_name,a.start_time,a.by1  from waiters a,waiters b

where a.waiter_name = b.waiter_name

group by  a.room_id,a.waiter_name,a.start_time,a.by1

having a.start_time<=min(b.start_time) or a.start_time >=max(b.start_time)

order by a.waiter_name

) tt

group by tt.waiter_name;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值