我想根据个人的头衔(先生,夫人等)来确定我的客户的男/女分裂
要做到这一点,我需要将Miss / Mrs / Ms的结果合并到一个“女性”字段中。
下面的查询得到每个标题的总数,但我想我需要一个子查询来返回合并的女性数字。
非常感谢任何帮助。
Query:
SELECT c.Title, COUNT(*) as Count
FROM
Customers c
GROUP BY Title
ORDER By [Count] DESC
Answer:
Mr 1903
Miss 864
Mrs 488
Ms 108
答案 0 :(得分:4)
你可以这样做
SELECT
[Gender] = CASE [Title] WHEN 'Mr' THEN 'M' ELSE 'F' END,
COUNT(*) as Count
FROM
Customers c
GROUP BY
CASE [Title] WHEN 'Mr' THEN 'M' ELSE 'F' END
ORDER By
[Count] DESC
演示
答案 1 :(得分:1)
您可以使用CASE为标题投影新组:
SELECT SUM(CASE WHEN Title IN ('Mr') THEN 1 ELSE 0 END) AS Male,
SUM(CASE WHEN Title IN ('Miss', 'Ms', 'Mrs') THEN 1 ELSE 0 END) AS Female
FROM
Customers c;
答案 2 :(得分:0)
试试这个:
SELECT (CASE WHEN c.Title = 'Mr' THEN 'Male'
WHEN c.Title IN ('Mrs', 'Miss', 'Ms') THEN 'Female'
ELSE 'NA'
END) AS title,
COUNT(1) AS PeopleCount
FROM Customers c
GROUP BY (CASE WHEN c.Title = 'Mr' THEN 'Male'
WHEN c.Title IN ('Mrs', 'Miss', 'Ms') THEN 'Female'
ELSE 'NA'
END)
ORDER By PeopleCount DESC;