通过使用表达式的部分进行分组

时间:2014-12-08 07:13:03

标签: sql oracle select group-by aggregate-functions

我有一张这样的表:

         Name              Count
23feb.01.04.(33.03.03)       1
23feb.09.(12.04.06)          9
23feb.02.09.(25.06)          1
23feb.01.02.04               2
23feb.01.02                 48
23feb.02.13                  4
23feb.01.04.(33.03.10)       1
23feb.01.04.(33.03.06)       1
23feb.02                    48
23feb.02.07                 12
23feb.01.04.(33.03.01)       1
23feb.02.02                  3
23feb.02.04                 11
23feb                      279
23feb.02.06                  3
23feb.03                    83

有没有办法让group by函数获取Name字符串的更高级别的聚合结果?所以,理想的结果是:

  Name                     Count
  23feb                     507

怎么做?

2 个答案:

答案 0 :(得分:2)

您可以查询的任何(行)表达式也可以是按表达式分组:

SELECT   SUBSTR(name, 1, INSTR(name, '.')), COUNT(*)
FROM     my_table
GROUP BY SUBSTR(name, 1, INSTR(name, '.'))

答案 1 :(得分:1)

要避免使用Like通配符,您可以使用LEFT

  SELECT  LEFT(name,5), COUNT(*)
  FROM     my_table
  GROUP BY LEFT(name,5)
相关问题