我正在学习SQL查询,下面有一个问题
“十年是连续十年的序列,例如1982年、1983年.1991年。每十年计算该十年内DBLP出版物的总数。”
我想出了一个临时的桌子,用来统计select count(id) as cnt, year from publication group by year
每年的数据。
因此,下一步是总结十年的cnt。经过一些研究,我发现我可以使用之间的运算符。但是,我仍然需要一个一个地指定范围。有什么更好的方法吗?(年份范围为1900-2015年)
非常感谢。
发布于 2014-09-21 02:07:43
我将一年除以十,然后发言(这可能是隐式的,但我不太熟悉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
。如果你的“连续十年”规则不是那样下降,你将不得不加上一些算术。但听起来应该是这样,即使没有,这对用户来说也可能更理想。
发布于 2014-09-21 02:10:35
经过一番研究,我发现这个由左到下的小组能帮到很多忙。
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
如果有更好的方法,请给出你的建议。谢谢。
发布于 2019-05-06 17:47:03
我刚开始使用SQL,所以这是我最简单的答案。也许它会对你有帮助
SELECT(MAX(year_2)-MIN(year_1))/10.0
FROM data-X;
https://stackoverflow.com/questions/25955049
复制相似问题