Re: [SQL ] 關於select資料

看板Database作者 (多想兩分鐘 = =")時間17年前 (2008/11/21 11:59), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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
感恩 謝謝 我之前運用java的功能 才算出
11/21 22:58, 1F
文章代碼(AID): #199Z8QEA (Database)
文章代碼(AID): #199Z8QEA (Database)