Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:如何总结几十年的统计?_Mysql_Sql - Fatal编程技术网

Mysql SQL:如何总结几十年的统计?

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年) 非常感谢。我会

我正在学习SQL查询,有一个问题如下

“十年是连续十年的序列,例如1982年、1983年……1991年。对于每个十年,计算该十年DBLP中的出版物总数。”

我已经为每年的计数提供了一个临时表,其中,
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;