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