2013-10-15 87 views
1

百分比我有一個查詢在那裏我得到一個結果集的日期,商店及類型分組的交易總計。我卡住的地方是:我也想計算百分比,我只是在Excel中完成它,但由於錯誤的命名約定,每個商店的行數不一致,結果集相當大。如何計算一個分組結果集的集合列的SQL Server中

這裏是我的查詢,而無需百分比:

SELECT DATEPART(Year,datecreated) as [Year], 
      DATEPART(Month,datecreated) as [Month], 
      b.Name as [Store] 
      Type as [Type], 
      Count(Transaction) as [Total], 
      SUM(Amount) as [Value], 
     -- one or two other aggregate functions 
    FROM MyTransactions a, MyStores b 
    WHERE a.Status = 'Paid' 
    AND a.ID = b.ID 
    -- AND Date -- daterange 
    GROUP BY 
    datepart(year,datecreated),datepart(month,datecreated),Type 
    ORDER BY year desc,month desc,type desc, store desc 

這工作完全正常,現在我只需要確定每類事務的百分比的最佳途徑。例如佔總數的60%,價值22%的2013年

9月期間在指定的商店類型「信用」的你也許對我有什麼建議嗎?將不勝感激。

編輯:

我尋找的結果看起來有點像這樣:

2012 | 10 | Store1 | Credit | 100 | 50% 
2012 | 10 | Store1 | Debit | 100 | 50% 
2012 | 10 | Store2 | Credit | 400 | 40% 
2012 | 10 | Store2 | Debit | 600 | 60% 

等(很明顯,其他幾個值和百分比)

+0

你能嘗試尋找任何這些的,看起來很相似:在SQL Server堆棧溢出百分比計(http://stackoverflow.com/questions/10134905/sql-percentage -count)然而,在SQL Server的另一百分比計(http://stackoverflow.com/questions/770579/how-to-calculate-percentage-with-a-sql-statement/5846102#5846102) –

+0

我有一個看看其中的許多人(嘗試了其中的一些解決方案)。我認爲我的問題更多的是我的分組,並獲得正確的(關係)總數來計算百分比。 –

回答

3

使用CTE提供你的過濾結果(NB:加入語法而不是加入where子句)...

;with cte as (
     select 
      datepart(yyyy,datecreated) dateyear, 
      datepart(mm,datecreated) datemonth, 
      b.name as store, 
      type, 
      [transaction] as t, 
      amount 
from 
    myTransactions a inner join mystores b 
      on a.id = b.id 
where a.status='paid' 
) 
select 
     dateyear, 
     datemonth, 
     [Store], 
     [Type], 
     Count(T) as [Total], 
     SUM(Amount) as [Value], 
     100.0*count(T)/
      (Select count(T) from cte c1 where c1.store=cte.store and c1.dateyear = cte.dateyear and c1.datemonth=cte.datemonth), 
     100.0*Sum(Amount)/
      (Select sum(amount) from cte c1 where c1.store=cte.store and c1.dateyear = cte.dateyear and c1.datemonth=cte.datemonth) 
from cte 
group by 
     dateyear, datemonth,Type, store 

然後從這些結果,一個簡單的百分比計算

+0

感謝您的答案,但不會(從cte中選擇count(T))和(從cte中選擇sum(amount))給我所有行的相同總值? –

+0

@HannoOpperman會,是 - 計算% – podiluska

+0

總需求,是關係到商店和日期,雖然,這就是爲什麼我一直在用我的CTE掙扎(它返回所有行的總一樣,我需要總的年,月,存儲和所有類型的,以計算百分比。在CTE的情況下,它給了我所有的行相同的總) –

相關問題