2010-10-05 93 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