按城市分组

时间:2015-11-09 16:53:09

标签: mysql sql excel group-by

我在分组时遇到了困难;我正在研究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是具有该年龄段的男性的总数城市,TotFemmine是该城市中年龄相仿的女性总人数;因为我不需要这些数据,所以您不需要翻译其他列。

我想要得到的是一个视图,其中包含每个城市的男性总人数和每个年龄段的女性总人数,即城市中的男性人数{{1}在420010年之间,等等。

为了记录,我已经尝试了解决方案here,但它不符合我的目的,而且我无法调整链接中的代码到我的案例;当然我知道我可以在Excel中完成它,但由于该表有超过24,000行,所以它将占用我的整个生命。

3 个答案:

答案 0 :(得分:1)

E.g:

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);

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这是TotMaschi和totFemmine的样本......每个CodiceComune的age_range中十年的人口总和。

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