【发布时间】:2014-07-21 08:39:56
【问题描述】:
我进行了以下查询,以按年龄组、计数和百分比选择人员。年龄在我的数据库中存储为0000-00-00。
SELECT AgeGroup, count(*) AS count, ROUND(sum( 100 ) / total) AS percentage
FROM (
SELECT case
when age between 0 and 17 then '00 - 17'
when age between 18 and 24 then '18 − 24'
when age between 25 and 34 then '25 − 34'
when age between 35 and 44 then '35 − 44'
when age between 45 and 54 then '45 − 54'
when age between 55 and 64 then '55 − 64'
when age between 65 and 125 then '65+'
else 'Unknown'
end AS AgeGroup
FROM (
SELECT ROUND(DATEDIFF(Cast(NOW() as Date),
Cast(dateofbirth as Date)) / 365, 0) as age
FROM people
) as SubQueryAlias
) as SubQueryAlias2
CROSS JOIN (SELECT count( * ) AS total FROM people)x
group by
AgeGroup
目前的结果是:
AgeGroup | count | percentage
00 - 17 33 1
18 − 24 235 5
.. .. ..
我需要在查询中添加一个以分隔男性/女性/未知的结果:
AgeGroup | gender | count | percentage
00 - 17 M 33 1
00 - 17 F 33 1
.. .. .. ..
【问题讨论】:
-
在
GROUP BY子句中简单地添加性别会有什么结果? -
使用 GROUP BY 性别按顺序返回结果?
-
@user2071225 Group BY 性别由于某种原因不起作用
-
你在用
group by AgeGroup, Gender吗? -
@user2071225 是的,列名是“性别”,但我一直收到:“组声明”中的未知列“性别”