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

时间:2014-09-21 01:57:09

标签: mysql sql

我正在学习SQL查询,并提出如下问题

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

我已经用select count(id) as cnt, year from publication group by year

为每年的计数提出了一个临时表

所以下一步是总结一年十年的cnt。经过一些研究,我发现我可以使用 BETWEEN 运算符。但是,我仍然需要逐个指定范围。有没有更好的方法来做到这一点? (年份范围是1900年至2015年)

非常感谢。

3 个答案:

答案 0 :(得分:0)

我只想将年份除以10,然后发言(这可能是隐含的,但我对MySQL并不熟悉)。

SELECT (FLOOR(Year / 10) * 10) AS Decade, COUNT(id) AS Cnt
FROM Publication
GROUP BY FLOOR(Year/ 10)

这种方法的诀窍在于我假设你想要1900-19091910-19191920-1919...2010-2015。如果你的“连续十年”规则没有那样下降,你将不得不加入一些算术。但它听起来应该是这样,即使不是这样,这对用户来说可能更为理想。

答案 1 :(得分:0)

经过一番研究,我发现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)
;

结果是

十年cnt

NULL    6
193 55
194 139
195 1066
196 8066
197 28449
198 93203
199 359628
200 1249767
201 947365

如果有更好的方法,请提出您的建议。谢谢。

答案 2 :(得分:0)

我是SQL的新手,所以这是我最简单的答案。 也许会对您有帮助

SELECT(MAX(year_2)-MIN(year_1))/10.0
FROM data-X;