我在分组时遇到了困难;我正在研究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}在42001
和0
年之间,等等。
为了记录,我已经尝试了解决方案here,但它不符合我的目的,而且我无法调整链接中的代码到我的案例;当然我知道我可以在Excel中完成它,但由于该表有超过24,000行,所以它将占用我的整个生命。
答案 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;