首页 >数据库 >mysql教程 >如何在 SQL 中将数值数据分组到范围中?

如何在 SQL 中将数值数据分组到范围中?

Barbara Streisand
Barbara Streisand原创
2025-01-17 21:21:11609浏览

How Can I Group Numerical Data into Ranges in SQL?

用于数值数据分箱的 SQL 技术

本指南演示了如何将 SQL 数据库中的数值数据分类到定义的范围内。 假设您有一个带有数字列(例如“分数”)的表格。目标是生成一个摘要,显示每个范围内的分数计数。

示例:

汇总表可能如下所示:

Score Range Frequency
0-9 11
10-19 14
20-29 3
... ...

以下是在 SQL Server 2000 及更高版本中实现此目的的方法:

方法 1:子查询中的 CASE 表达式

此方法使用子查询内的 CASE 表达式为每个分数分配范围标签,然后使用外部查询来计算每个范围内的出现次数。

<code class="language-sql">SELECT t.range AS "Score Range", COUNT(*) AS "Frequency"
FROM (
  SELECT score,
         CASE  
           WHEN score BETWEEN 0 AND 9 THEN '0-9'
           WHEN score BETWEEN 10 AND 19 THEN '10-19'
           ELSE '20-99'  -- Handle scores outside defined ranges
         END AS range
  FROM scores
) t
GROUP BY t.range;</code>

方法二:主查询中的 CASE 表达式

或者,CASE 表达式可以直接嵌入到主查询中,稍微简化结构。

<code class="language-sql">SELECT 
    CASE  
        WHEN score BETWEEN 0 AND 9 THEN '0-9'
        WHEN score BETWEEN 10 AND 19 THEN '10-19'
        ELSE '20-99'  -- Handle scores outside defined ranges
    END AS "Score Range",
    COUNT(*) AS "Frequency"
FROM scores
GROUP BY 
    CASE  
        WHEN score BETWEEN 0 AND 9 THEN '0-9'
        WHEN score BETWEEN 10 AND 19 THEN '10-19'
        ELSE '20-99'
    END;</code>

这些方法有效地将数据分组并汇总到自定义范围中,为数据分布提供有价值的见解。请记住调整 CASE 语句以匹配您的特定分数范围。 考虑为定义范围之外的值添加错误处理。

以上是如何在 SQL 中将数值数据分组到范围中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn