Mysql SQL:如何总结几十年的统计?
我正在学习SQL查询,有一个问题如下 “十年是连续十年的序列,例如1982年、1983年……1991年。对于每个十年,计算该十年DBLP中的出版物总数。” 我已经为每年的计数提供了一个临时表,其中,Mysql SQL:如何总结几十年的统计?,mysql,sql,Mysql,Sql,我正在学习SQL查询,有一个问题如下 “十年是连续十年的序列,例如1982年、1983年……1991年。对于每个十年,计算该十年DBLP中的出版物总数。” 我已经为每年的计数提供了一个临时表,其中,select count(id)作为cnt,year from publication group by year 因此,下一步是总结10年的cnt。经过一些研究,我发现我可以使用BETWEEN操作符。但是,我仍然需要逐个指定范围。有没有更好的办法?(年份范围为1900年至2015年) 非常感谢。我会
select count(id)作为cnt,year from publication group by year
因此,下一步是总结10年的cnt。经过一些研究,我发现我可以使用BETWEEN操作符。但是,我仍然需要逐个指定范围。有没有更好的办法?(年份范围为1900年至2015年)
非常感谢。我会把一年除以十,然后发言(这可能是隐含的,但我对MySQL不是非常熟悉)
这种方法的诀窍是,我假设您想要
1900-1909
,1910-1919
,1920-1919
,…
,2010-2015
。如果你的“连续十年”规则不是那样的话,你必须加上一些算术。但听起来应该这样做,即使不这样做,这对用户来说可能更为理想。经过一些研究,我发现GROUP BY和LEFT()会有很大帮助
select LEFT(year, 3) as decade , sum(cnt) from
(select count(id) as cnt, year from publication group by year)
as T1
group by LEFT(year, 3)
;
结果是
十年碳纳米管
NULL 6
193 55
194 139
195 1066
196 8066
197 28449
198 93203
199 359628
200 1249767
201 947365
如果有更好的方法,请给出你的建议。谢谢。我是SQL新手,所以这是我最简单的答案。 也许对你有帮助
SELECT(MAX(year_2)-MIN(year_1))/10.0
FROM data-X;
SELECT(MAX(year_2)-MIN(year_1))/10.0
FROM data-X;