我試圖從我的表格中計算男性和女性的百分比;到目前爲止,我已經計算了女性總數,男性總數以及我的桌子上未公開的數字。但是,我想從這些總數中計算女性和男性的比例。計算分組內的百分比
我的初始查詢看起來像:
SELECT [description] AS [Gender] ,
COUNT(C.id) AS [GenderCount]
FROM dbo.Customers AS [C]
INNER JOIN dbo.GenderTypes AS [GT] ON C.genderTypeID = GT.id
WHERE C.customerStatusTypeID = 'O'
GROUP BY GT.[description]
而且結果:
Gender GenderCount
Female 60620
Male 394165
Undisclosed 630007
我試圖包裹查詢的CTE來計算使用case語句的百分比,但我m顯然缺少一些東西,因爲女性,男性和未公開的都是100%。
;WITH Gender (Gender, GenderCount)
AS
(
SELECT [description] AS [Gender] ,
COUNT(C.id) AS [GenderCount]
FROM dbo.Customers AS [C]
INNER JOIN dbo.GenderTypes AS [GT] ON C.genderTypeID = GT.id
WHERE C.customerStatusTypeID = 'O'
GROUP BY GT.[description])
SELECT Gender.Gender, Gender.GenderCount,
CASE WHEN
Gender.Gender = 'Female' THEN Gender.GenderCount/SUM(Gender.GenderCount) * 100
WHEN Gender.Gender = 'Male' THEN Gender.GenderCount/SUM(Gender.GenderCount) * 100
ELSE Gender.GenderCount/SUM(Gender.GenderCount) * 100
END AS [%Gender]
FROM Gender
GROUP BY Gender.Gender, Gender.GenderCount;
下面是結果:
Gender GenderCount %Gender
Female 60620 100
Male 394165 100
Undisclosed 630007 100
如果我的數學/ TSQL是正確的,結果應該是這樣的:
Female: 5.59%
Male: 36.34%
Undisclosed: 58.08%
任何人都可以幫助我在我失去了我獲得正確的結果?
真棒 - 我欣賞的幫助。 – MISNole
如何將小數後的性別比例限制在2個位置?努力解決這個問題。 – MISNole
您可以將最終結果轉換爲十進制(10,2).... – TriV