Oracle 查询按类型分组

Posted

技术标签:

【中文标题】Oracle 查询按类型分组【英文标题】:Oracle query group by type 【发布时间】:2013-12-13 01:56:53 【问题描述】:

我的查询有一个输出:

Item   Type   Qty
 1       A     2
 2       A     3
 3       B     1
 4       B     2
 5       C     1
 6       D     3

要分组的类型:A、B

我需要我的输出看起来像这样:(在对数量和分组求和之后)

Type      Qty
  A        5
  B        3
OTHERS     4

当未定义类型时,它将分组在“其他”中。这是否可以使用分析函数来完成,还是我需要为此创建自己的函数?

【问题讨论】:

【参考方案1】:

假设您的表/视图名称是 x,这将给出所需的输出:

SELECT CASE WHEN type IN ('A', 'B') THEN type ELSE 'OTHERS' END AS type,
       SUM(qty) AS qty
  FROM x
GROUP BY CASE WHEN type IN ('A', 'B') THEN type ELSE 'OTHERS' END
ORDER BY 1

【讨论】:

【参考方案2】:
  select type,sum(qty) from (select decode(type,c,'OTHERS',d,'OTHERS') type,qty from your_table) group by type;

                       (or)

  select type,sum(qty) from (select (case when type in ('A','B') then type else 'others' end) type,qty from your_table) group by type;

【讨论】:

以上是关于Oracle 查询按类型分组的主要内容,如果未能解决你的问题,请参考以下文章

Oracle_group by分组查询_深入

请问DB2里面的SQL查询语句按周分组是怎么写的

oracle 分组中排序(rank函数)

oracle 如何按天分组?比如一个表有个字段ST(date 类型)精确到秒,如何使用ST按天分组?

将查询分组为 3 列,并在 Apex Oracle 中显示另一列的总和

thinkphp 如何得到一个按字段内容分组的array