MySQL生成Age Pyramid

时间:2010-10-05 14:09:30

标签: mysql statistics charts

如何编写适合生成年龄金字塔的查询,如下所示: alt text

我有一个表格,其中DATE字段包含他们的生日,而BOOL字段包含性别(男性= 0,女性= 1)。两个字段都可以为NULL。

我似乎无法理解如何处理生日并将它们分组成10年。

编辑:

理想情况下,X轴将是百分比而不是数千:)

1 个答案:

答案 0 :(得分:2)

SELECT  FLOOR((EXTRACT(YEAR FROM FROM_DAYS(DATEDIFF(NOW(), birthday))) - 4) / 10) AS age, gender, COUNT(*)
FROM    mytable
GROUP BY
        age, gender
年龄

-1表示0-40表示4-14等。

如果给定年龄组中没有人,则此查询可能会留下空白。

与百分比相同(来自总人口):

SELECT  FLOOR((EXTRACT(YEAR FROM FROM_DAYS(DATEDIFF(NOW(), birthday))) - 4) / 10) AS age, gender,
        COUNT(*) /
        (
        SELECT  COUNT(*)
        FROM    mytable
        )
FROM    mytable
GROUP BY
        age, gender