Sql 使用表达式的部分进行分组

Sql 使用表达式的部分进行分组,sql,oracle,select,group-by,aggregate-functions,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.1

我有一张这样的桌子:

         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
是否有任何方法可以执行
groupby
函数来获得
Name
字符串更高级别的聚合结果?因此,理想的结果如下:

  Name                     Count
  23feb                     507
如何进行查询?

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

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

要避免像通配符那样的
,可以使用
LEFT

  SELECT  LEFT(name,5), COUNT(*)
  FROM     my_table
  GROUP BY LEFT(name,5)

是的,使用group by和SQL
SubString
的字符串函数非常接近,节拍9秒。我开始理解它是如何工作的了!但是,您的查询仍然不同。哪一个有效取决于表中的所有值。也就是说,所有的值都会出现在这个表中,也就是说,你不需要在一个列上分组,你也可以在一个列上的函数上分组,就像上面发生的那样。使用LEFT或SUBSTR正是您的选择。按它分组后,它将成为要放入选择部分的候选项,如所示。