作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 关於select资料
时间Fri Nov 21 11:59:21 2008
※ 引述《mijinu (不要查我)》之铭言:
: 我有一个资料表长这样
: name place speed time
: 1 0 32 12
: 2 0 25 14
: 3 0 21 15
: 4 0 22 17
: 5 0 23 18
: 1 1 44 50
: 2 1 56 68
: 3 1 45 85
: 我想要选出 name里面有经过place里面的0和1都有经过
: 然後算出name 1 2 3这三个人的平均速度 还有平均时间 想要做出下面那个表
: avg_speed avg_time
: 37 54
: 目前初步只想到 先选出 name里面有通过place 0且1的人
: select * from TABLE where name in
: (
: select name from TABLE
: group by name
: having count(*)>1
: )
: 所以想请问各位 要如何做起 谢谢
: ※ 编辑: mijinu 来自: 140.112.10.205 (11/21 08:55)
: ※ 编辑: mijinu 来自: 140.112.10.205 (11/21 09:15)
: 推 grence:avg()..就这样吗? 11/21 10:08
: → mijinu:速度可以avg() 可是avg_time 要先相减在avg 不知道怎麽做 11/21 10:14
结果的表看不懂怎麽算
看到「先相减」…猜测是这样
declare @t table(name int, place int, speed float,[time] float)
insert @t values (1,0,32,12)
insert @t values (2,0,25,14)
insert @t values (3,0,21,15)
insert @t values (4,0,22,17)
insert @t values (5,0,23,18)
insert @t values (1,1,44,50)
insert @t values (2,1,56,68)
insert @t values (3,1,45,85)
--insert @t values (1,2,44,90)
--insert @t values (2,2,56,108)
with t as(
select *,time fig_time
from @T where name in
(
select name from @T
group by name
having count(*)>1
)and place=0
union all
select t2.name,t2.place,t2.speed,t2.time ori_time,t2.time-t1.time fig_time
from t t1
join @t t2 on t1.name=t2.name and t1.place=t2.place-1
)
select *
from t
order by name,place
结果为
name place speed time fig_time 从上一个地点往下走所花的时间
1 0 32 12 12
1 1 44 50 38
2 0 25 14 14
2 1 56 68 54
3 0 21 15 15
3 1 45 85 70
然後再对fig_time做计算吧..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.61.172.157
1F:推 mijinu:感恩 谢谢 我之前运用java的功能 才算出 11/21 22:58