2010-10-05 52 views
3

如何编写适合于产生年龄金字塔这样的查询: alt textMySQL的生成年龄金字塔

我有一个包含自己的生日和含有性别布尔字段(男日期字段的表= 0,女= 1)。任何一个字段都可以是NULL。

我似乎无法弄清楚如何处理生日,并把它们分成10年的小组。

编辑:

理想情况下,X轴是百分比,而不是成千上万的:)

回答

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 
+0

谢谢您的回答! Unfortunatley的年龄不起作用,它只返回0:S – Starlin 2010-10-05 14:24:13

+0

@Starlin:请发布一个你认为应该返回另一个值的样本记录 – Quassnoi 2010-10-05 14:24:57

+0

你说得对,我的错误:) – Starlin 2010-10-05 14:31:32