私はテーブルから男性と女性のパーセンテージを計算しようとしています。今まで私は女性、男性の総数を計算し、私のテーブルからは公表されていません。しかし、私はこれらの合計から女性と男性の割合を計算したいと思います。グループ内のパーセンテージを計算する
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]
と結果:
私の最初のクエリでは、ように見えた私は、case文を使用して比率を計算するCTEでクエリをラップしようとしましたが、私は
Gender GenderCount
Female 60620
Male 394165
Undisclosed 630007
女性、男性、非公開のすべてが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
10進数の後に性別の割合を2桁に制限する方法はありますか?それを理解するのに苦労している。 – MISNole
最終結果を10進数(10,2)にキャストすることができます.... – TriV