select t3.Total
from (
select sum(Unit) as Total, count(*) as Rank
from Table t1,(
select ID,Unit
from Table
order by Unit,ID
) t2
where (t1.Unit > t2.Unit) or (t1.Unit = t2.Unit and t1.ID >= t2.ID)
group by t1.ID
) t3
where t3.Rank = 5 or t3.Rank = 10 or t3.Rank = 20
ps. 因為我不知道你的「依大小排序」是怎麼個排法
我目前是依照 Unit 由小到大排,如果 Unit 一樣的話再依 ID 由小到大排
然後要求幾個總和只要改紅色的條件式即可
※ 引述《pttsasho (sasho)》之銘言:
: 假設我有一Table
: 裡面共有100列的資料,每列只有兩欄 ID、 Unit
: 我希望可以依大小排序後,求得前5筆unit的總和、前10筆unit的總和、前20筆unit的總和
: 我知道可以用sum以及limit來處理
: 不過這樣的話 要求幾個總和 就要分幾次查詢
: 如果希望只下一次指令的話
: 目前知道的只有利用子查詢的方式進行
: 不曉得是否有其他方式可以完成呢?
: 謝謝各位前輩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.27.133