当前位置: 首页 > 面试题库 >

在SQL中,如何对范围进行“分组依据”?

越福
2023-03-14
问题内容

假设我有一个带有数字列的表(我们称其为“分数”)。

我想生成一个计数表,该表显示每个范围内得分出现的次数。

例如:

score range  | number of occurrences
-------------------------------------
   0-9       |        11
  10-19      |        14
  20-29      |         3
   ...       |       ...

在此示例中,分数在0到9之间的行有11行,分数在10到19之间的行有14行,分数在20-29范围内的行有3行。

有一个简单的方法来设置它吗?您有什么推荐的吗?


问题答案:

在SQL Server 2000上,投票率最高的答案均不正确。也许它们使用的是其他版本。

这是它们在SQL Server 2000上的正确版本。

select t.range as [score range], count(*) as [number of occurences]
from (
  select case  
    when score between 0 and 9 then ' 0- 9'
    when score between 10 and 19 then '10-19'
    else '20-99' end as range
  from scores) t
group by t.range

或者

select t.range as [score range], count(*) as [number of occurrences]
from (
      select user_id,
         case when score >= 0 and score< 10 then '0-9'
         when score >= 10 and score< 20 then '10-19'
         else '20-99' end as range
     from scores) t
group by t.range


 类似资料:
  • 问题内容: 我有一个包含类别,日期和费率的表。每个类别在不同日期可以具有不同的费率,一个类别在给定日期只能具有一个费率。 唯一索引(类别,日期,费率)我希望针对每个类别将所有连续的日期范围归为一组,并仅保留范围的开始和结束。对于前面的示例,我们将有: 我在论坛中找到了一个类似的解决方案,但并未完全给出结果 请参见SQL FIDDLE 如何在mysql中做同样的事情?请帮忙! 问题答案: MySQL

  • 我有一个遗传数据集,我想对基因组中物理上接近的遗传变异/行进行分组。我想对每个染色体()基因组中某些斑点范围内的基因进行分组。 我的“spots”数据集包含变量/行需要在一定范围内的位置,如下所示: 我的< code>low和< code>high列是我希望查看下一个数据集中是否有任何行落入其中的范围,同时考虑到染色体(< code>chrom)也必须匹配。具有唯一范围和chrom组合的每一行都是

  • 问题内容: 我正在尝试对此表进行查询: 我想获得输出: 我想得到那个结果,所以我会知道什么时候开始赚钱,什么时候停止钱。我还对开始花钱之前的月份数(这解释了第一行)以及停止钱的月份数(这解释了为什么我也对2013年7月至2013年8月的第三行感兴趣)感兴趣。 )。 我知道我可以在日期上使用min和max,在金额上使用sum,但是我不知道如何以这种方式划分记录。 谢谢! 问题答案: 这是一个主意(和

  • 问题内容: 如何返回在MySQL中实际上是“连续的” GROUP BY的内容。换句话说,GROUP BY是否尊重记录集的顺序? 例如,从下表中,col1是唯一的有序索引: 返回: 但我需要返回以下内容: 问题答案: 使用: 这里的关键是创建一个允许分组的人为值。 以前,更正了Guffa的答案:

  • 问题内容: 我有两个表(1&2)应该合并到第三(3)个表中。 表1:F_Number,A_Number, A_Weight 表2:A_Number,A_Country表3:F_Number,A_Country,A_Weight 第三表应按F_Number分组,求和A_Weight,其中A_Country具有相同的值。到目前为止,表的联接工作正常: 结果是一个像这样的表: F_Number; 一个国

  • 问题内容: 问题答案: Mysql作为关键字的分隔符使用反引号“`”,而不是方括号(例如sql server)