业务表结构如下:
-- Create table
create table dis_table
(
rec_id VARCHAR2(36) not null,
deviceid NUMBER(9),
jldate NUMBER(38),
jlstime NUMBER(38),
distance number(38)
)
---业务数据
rec_id deviceid jldate jlstime distance
1 20140509170323459030 4005 20140509 170333 0
2 20140509170357463108 4005 20140509 170403 0
3 20140509170423466333 4005 20140509 170433 0
4 20140509170454470072 4005 20140509 170453 1
5 20140509170524473817 4005 20140509 170523 2
6 20140509170554477478 4005 20140509 170553 3
7 20140509170624481175 4005 20140509 170623 4
8 20140509170754492398 4005 20140509 170753 0
9 20140509170824496074 4005 20140509 170823 1
10 20140509170854499739 4005 20140509 170853 2
11 20140509170924403314 4005 20140509 170923 3
12 20140509192037456692 4005 20140509 192035 4
13 20140509192107460321 4005 20140509 192105 5
14 20140509192137463964 4005 20140509 192135 6
15 20140509192207467585 4005 20140509 192205 0
16 20140509192237471151 4005 20140509 192235 1
17 20140509192506489252 4005 20140509 192505 6
18 20140509192536492849 4005 20140509 192535 8
19 20140509192606496471 4005 20140509 192605 11
20 20140509192636400061 4005 20140509 192635 13
-----需要按业务数据进行分组,即每下一条业务数据出现0时,即将之前的数据视为一组
rec_id deviceid jldate jlstime distance gruop_Id
1 20140509170323459030 4005 20140509 170333 0 1
2 20140509170357463108 4005 20140509 170403 0 2
3 20140509170423466333 4005 20140509 170433 0 3
4 20140509170454470072 4005 20140509 170453 1 3
5 20140509170524473817 4005 20140509 170523 2 3
6 20140509170554477478 4005 20140509 170553 3 3
7 20140509170624481175 4005 20140509 170623 4 3
8 20140509170754492398 4005 20140509 170753 0 4
9 20140509170824496074 4005 20140509 170823 1 4
10 20140509170854499739 4005 20140509 170853 2 4
11 20140509170924403314 4005 20140509 170923 3 4
12 20140509192037456692 4005 20140509 192035 4 4
13 20140509192107460321 4005 20140509 192105 5 4
14 20140509192137463964 4005 20140509 192135 6 4
15 20140509192207467585 4005 20140509 192205 0 5
16 20140509192237471151 4005 20140509 192235 1 5
17 20140509192506489252 4005 20140509 192505 6 5
18 20140509192536492849 4005 20140509 192535 8 5
19 20140509192606496471 4005 20140509 192605 11 5
20 20140509192636400061 4005 20140509 192635 13 5
---最终需求是
select sum(dis) from select gruop_Id, max(distance) - min(distance) dis group by gruop_Id)
即:将每组的最大值减去最小值,得出每组值之差(其实就是每组max(distance),因为都是从0开始分组的)。然后再将每组之差进行累加,得到业务数据中累计distance
烦请,哪位大侠帮我写个sql语句实现上述业务需求,不胜感激! 目前本人不知道如何按照业务数据来进行分组。
------解决方案--------------------