重命名 SQL 中的结果类别
Renaming result categories in SQL
我有以下查询,它输出称谓为先生/女士的成员的数量和百分比。
我想将结果重命名为 'Male' 而不是 'Mr' 和 Female 而不是 'Ms'。
这可能是一个相当简单的 CASE 事情,但无法让它工作...
SELECT AspNetUsers.Salutation AS Sex, COUNT(AspNetUsers.Salutation) as Total,
CAST(ROUND((COUNT(AspNetUsers.Salutation)* 100.0 / (SELECT COUNT(*) FROM Member, AspNetUsers WHERE Member.AspNetUserId = AspNetUsers.Id)),1) AS NUMERIC(36,1)) AS Percentage
FROM Member, AspNetUsers
WHERE Member.AspNetUserId=AspNetUsers.Id
GROUP BY Salutation
您完全正确,这是一个简单的 case 表达式,但您还需要按相同的 case 表达式进行分组。
SELECT
CASE
WHEN AspNetUsers.Salutation = 'Mr' THEN 'Male'
WHEN AspNetUsers.Salutation = 'Ms' THEN 'Female'
ELSE 'Other' -- this is of course optional
END AS Sex,
COUNT(AspNetUsers.Salutation) as Total,
CAST(ROUND((COUNT(AspNetUsers.Salutation)* 100.0 / (SELECT COUNT(*) FROM Member JOIN AspNetUsers ON Member.AspNetUserId = AspNetUsers.Id)),1) AS NUMERIC(36,1)) AS Percentage
FROM Member
JOIN AspNetUsers ON Member.AspNetUserId = AspNetUsers.Id
GROUP BY
CASE
WHEN AspNetUsers.Salutation = 'Mr' THEN 'Male'
WHEN AspNetUsers.Salutation = 'Ms' THEN 'Female'
ELSE 'Other' -- this is of course optional
END;
可能可以通过使用公共 table 表达式来改进查询,这样就不必重复 case 表达式,并使用窗口计数代替子查询,但我会把它留给你。
我有以下查询,它输出称谓为先生/女士的成员的数量和百分比。
我想将结果重命名为 'Male' 而不是 'Mr' 和 Female 而不是 'Ms'。
这可能是一个相当简单的 CASE 事情,但无法让它工作...
SELECT AspNetUsers.Salutation AS Sex, COUNT(AspNetUsers.Salutation) as Total,
CAST(ROUND((COUNT(AspNetUsers.Salutation)* 100.0 / (SELECT COUNT(*) FROM Member, AspNetUsers WHERE Member.AspNetUserId = AspNetUsers.Id)),1) AS NUMERIC(36,1)) AS Percentage
FROM Member, AspNetUsers
WHERE Member.AspNetUserId=AspNetUsers.Id
GROUP BY Salutation
您完全正确,这是一个简单的 case 表达式,但您还需要按相同的 case 表达式进行分组。
SELECT
CASE
WHEN AspNetUsers.Salutation = 'Mr' THEN 'Male'
WHEN AspNetUsers.Salutation = 'Ms' THEN 'Female'
ELSE 'Other' -- this is of course optional
END AS Sex,
COUNT(AspNetUsers.Salutation) as Total,
CAST(ROUND((COUNT(AspNetUsers.Salutation)* 100.0 / (SELECT COUNT(*) FROM Member JOIN AspNetUsers ON Member.AspNetUserId = AspNetUsers.Id)),1) AS NUMERIC(36,1)) AS Percentage
FROM Member
JOIN AspNetUsers ON Member.AspNetUserId = AspNetUsers.Id
GROUP BY
CASE
WHEN AspNetUsers.Salutation = 'Mr' THEN 'Male'
WHEN AspNetUsers.Salutation = 'Ms' THEN 'Female'
ELSE 'Other' -- this is of course optional
END;
可能可以通过使用公共 table 表达式来改进查询,这样就不必重复 case 表达式,并使用窗口计数代替子查询,但我会把它留给你。