sql - Oracle:如何使 "group by"超过一个范围?

标签 sql oracle plsql oracle10g

如果我有一个这样的表:

pkey   age
----   ---
   1     8
   2     5
   3    12
   4    12
   5    22

我可以“分组”来计算每个年龄。

select age,count(*) n from tbl group by age;
age  n
---  -
  5  1
  8  1
 12  2
 22  1

我可以使用什么查询来按年龄范围进行分组?

  age  n
-----  -
 1-10  2
11-20  2
20+    1

我使用 10gR2,但我也对任何特定于 11g 的方法感兴趣。

最佳答案

SELECT CASE 
         WHEN age <= 10 THEN '1-10' 
         WHEN age <= 20 THEN '11-20' 
         ELSE '21+' 
       END AS age, 
       COUNT(*) AS n
FROM age
GROUP BY CASE 
           WHEN age <= 10 THEN '1-10' 
           WHEN age <= 20 THEN '11-20' 
           ELSE '21+' 
         END

关于sql - Oracle:如何使 "group by"超过一个范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2483140/

相关文章:

php - 代码点火器 : How to make the nested selection for related tables

sql - IN 与 PostgreSQL 中的 ANY 运算符

sql - 可更新 View (Oracle)

sql - 按字符串长度排序,然后按 pl sql 中的单个字母 desc 排序

使用 pls_integer 进行 Oracle 集合

sql - SQL 查询中函数调用的性能影响(关于上下文切换)

mysql - 使用 join 和 group by 对同一个表进行 SQL 查询

sql - 始终包含空记录的左连接

sql - 如何查询具有相同值集的项目

.net - 在 Oracle Merge 语句的 Using 子句中指定参数