Re: [SQL ] 關於select資料
※ 引述《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
推
11/21 22:58, , 1F
11/21 22:58, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):