如何编写适合生成年龄金字塔的查询,如下所示:
我有一个表格,其中DATE字段包含他们的生日,而BOOL字段包含性别(男性= 0,女性= 1)。两个字段都可以为NULL。
我似乎无法理解如何处理生日并将它们分组成10年。
编辑:
理想情况下,X轴将是百分比而不是数千:)
答案 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-4
,0
表示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