我正在学习SQL查询,并提出如下问题
“十年是一个连续十年的序列,例如1982年,1983年...... 1991年。每十年,计算该十年DBLP的出版物总数。”我已经用select count(id) as cnt, year from publication group by year
所以下一步是总结一年十年的cnt。经过一些研究,我发现我可以使用 BETWEEN 运算符。但是,我仍然需要逐个指定范围。有没有更好的方法来做到这一点? (年份范围是1900年至2015年)
非常感谢。
答案 0 :(得分:0)
我只想将年份除以10,然后发言(这可能是隐含的,但我对MySQL并不熟悉)。
SELECT (FLOOR(Year / 10) * 10) AS Decade, COUNT(id) AS Cnt
FROM Publication
GROUP BY FLOOR(Year/ 10)
这种方法的诀窍在于我假设你想要1900-1909
,1910-1919
,1920-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)
;
结果是
十年cntNULL 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;