首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据10个值的范围查找字段的计数

如何根据10个值的范围查找字段的计数
EN

Stack Overflow用户
提问于 2014-03-20 16:39:06
回答 2查看 41关注 0票数 0

我得到了一张年数和人名表,现在我需要找出在那一年到下一个10年之间的人的数量。这是如何做到的呢?这里的年份可以是重叠的,比如1965-74年和1972-81年等。

我试过

代码语言:javascript
复制
select concat(hindi2_MOVIE.year, '-', hindi2_MOVIE.year+10) as `range`,
       count(*) as `number of users`
  from hindi2_MOVIE
 where hindi2_MOVIE.year between hindi2_MOVIE.year and hindi2_MOVIE.year + 10
 group by 1
 order by hindi2_MOVIE.year;

但我得到的只是年数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-20 17:13:29

我想这会对你有用的

代码语言:javascript
复制
SELECT per_year.year, SUM(per_year.count) as total_decade
FROM hindi2_MOVIE INNER JOIN 
    (SELECT count(*) as count, year FROM hindi2_MOVIE GROUP BY year) per_year ON hindi2_MOVIE.year >= per_year.year AND hindi2_MOVIE.year < per_year.year + 10
GROUP BY hindi2_MOVIE.year
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 16:52:48

如果你每年都有电影,那就试试这个:

选择concat(min(m.year),'-',max(m.year))作为range,从hindi2_MOVIE m组逐层选择计数(*)为number of users ((m.year/ 10)按min(m.year)排序);

我对查询做了几处更改:

  • 删除where子句。它什么也没做。
  • 将范围计算更改为使用min()max()。这指定范围内的实际年份。
  • group by改为10除,然后发言。这样,几十年通常是2000-20092010-2019,等等。
  • 在表别名中添加可读性。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22539552

复制
相关文章

相似问题

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