我正在使用case语句来确定几个不同年龄段的Count(*),但我需要获取每个年龄段的百分比因为它涉及所有年龄组的总数。 我知道这是一个新手问题,但我卡住了。 谢谢 Andy如何使用select语句设置变量并将其用于case语句
这是我正在尝试使用的代码。
WITH AgeGroups AS (
SELECT
CASE
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) < 21 THEN 'Under 21'
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) BETWEEN 21 AND 29 THEN '21 - 29'
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) BETWEEN 30 AND 39 THEN '30 - 39'
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) BETWEEN 40 AND 49 THEN '40 - 49'
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) BETWEEN 50 AND 59 THEN '50 - 59'
WHEN DATEDIFF(YEAR, party.birthdate, GETDATE()) > 60 THEN '60 and Over'
ELSE 'Unkown'
END AS AgeGroup
FROM party
LEFT OUTER JOIN volunteer on partyID = volunteer.partyID
WHERE volunteer.swornDate BETWEEN @startDate AND @endDate)
SELECT AgeGroup, COUNT(*) AS AgeGroupCount, Convert(decimal(18,2),
(1.0*Count(*)/@Total * 100)) as percentage
FROM AgeGroups
GROUP BY AgeGroup
我试图与所有年龄组
你可以发布一些示例SQL吗?您可能需要使用子查询来计算总计,然后计算百分比。 – mellamokb 2012-04-18 03:03:26
2个问题。 1哪个版本的mssql? 2为什么你不接受你最后一个问题的答案? – 2012-04-18 10:35:01