按城市分组

我正在拼命拼命; 我正在研究意大利统计局(ISTAT)有关我们地区人口的数据; 他们给我每个城市和每个年龄段(0,1,2等)的数据,我需要为每个城市分10年课程(0-9,10-19等)。 前几行的示例:

| ID | CodiceComune | Eta | Celibi | Coniugati | Divorziati | Vedovi | TotMaschi | Nubili | Coniugate | Divorziate | Vedove | TotFemmine | +----+--------------+-----+--------+-----------+------------+--------+-----------+--------+-----------+------------+--------+------------+ | 1 | 42001 | 0 | 30 | 0 | 0 | 0 | 30 | 22 | 0 | 0 | 0 | 22 | | 2 | 42001 | 1 | 22 | 0 | 0 | 0 | 22 | 22 | 0 | 0 | 0 | 22 | | 3 | 42001 | 2 | 27 | 0 | 0 | 0 | 27 | 21 | 0 | 0 | 0 | 21 | | 4 | 42001 | 3 | 23 | 0 | 0 | 0 | 23 | 26 | 0 | 0 | 0 | 26 | | 5 | 42001 | 4 | 33 | 0 | 0 | 0 | 33 | 24 | 0 | 0 | 0 | 24 

CodiceComune是分配给每个城市的ISTAT代码, Eta是年龄(从0到100), TotMaschi是那个城市中那个年龄的男性总数, TotMaschi是那个年龄的女性总数市; 你不需要翻译其他列,因为我不需要这些数据。

我想得到的是一个包含“每个城市”男性总数和每个年龄组女性总人数的观点,即42001城市的男性人数在09岁之间,等等。

为了logging,我已经在这里尝试了解决scheme,但它不符合我的目的,我不能适应链接中的代码,以我的情况; 当然,我知道我可以在Excel中做到这一点,但是这将会耗费我一生的时间,因为桌子上有24000多行。

例如:

 SELECT CodiceComune , CONCAT(FLOOR((Eta+0.5)/10)*10,'-',(CEILING((Eta+0.5)/10)*10)-1) Age_group , SUM(TotMaschi) m , SUM(TotFemmine) f FROM my_table GROUP BY CodiceComune , FLOOR(Eta/10); 

这将计算MySQL中10年范围内的男性人数

 SELECT COUNT(TotMaschi) FROM tablename WHERE CodiceComune = 42001 AND eta IN (0,1,2,3,4,5,6,7,8,9) 

这是一个TotMaschi和totFemmine的样本…每个CodiceComune在10年的age_range中的人数总和。

 select CodiceComune, sum(totMaschi), sum(toyFemmine), eta div 10 as age_range from tablename group by CodiceComune, age_range;