T-SQL 計算佔全部結果的比率
在 T-SQL 中欲計算某一個數值相對於查詢結果中的比率,基本的作法是第一次查詢先計算總和,再進行第二次查詢計算各筆資料的比率。 提供另一種作法,透過 SQL Server 視窗函式 ( Window Function ) 可以一次完成查詢,要計算總合用以下的語法: sum(column) over (partition by 0) partition by 後面原本接欄位名稱時,會計算以此欄位群組後的合計, 我嘗試 放上任一個數字,就變成計算全部 ,這點沒找到相關文件說明。 完整範例 create table #T (ORDERNO int, Amount numeric(12,4)); insert into #T values(1, 100); insert into #T values(2, 200); insert into #T values(3, 300); select * from #T; WITH CTE as ( select ORDERNO, Amount from #T ) select ORDERNO, Amount, convert(numeric(12,4), Amount/sum(Amount) over(partition by 0)) as Percentage from CTE ; drop table #T; 參考文件 OVER Clause (Transact-SQL) – SQL Server 技術文件