首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL:如何总结几十年的计数?

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

Stack Overflow用户
提问于 2014-09-21 01:57:09
回答 3查看 4.2K关注 0票数 0

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

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

我想出了一个临时的桌子,用来统计select count(id) as cnt, year from publication group by year每年的数据。

因此,下一步是总结十年的cnt。经过一些研究,我发现我可以使用之间的运算符。但是,我仍然需要一个一个地指定范围。有什么更好的方法吗?(年份范围为1900-2015年)

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2014-09-21 02:07:43

我将一年除以十,然后发言(这可能是隐式的,但我不太熟悉MySQL)。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2014-09-21 02:10:35

经过一番研究,我发现这个由左到下的小组能帮到很多忙。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
NULL    6
193 55
194 139
195 1066
196 8066
197 28449
198 93203
199 359628
200 1249767
201 947365

如果有更好的方法,请给出你的建议。谢谢。

票数 0
EN

Stack Overflow用户

发布于 2019-05-06 17:47:03

我刚开始使用SQL,所以这是我最简单的答案。也许它会对你有帮助

代码语言:javascript
运行
复制
SELECT(MAX(year_2)-MIN(year_1))/10.0
FROM data-X;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25955049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档