【问题标题】:nasty Aggregation in SQLPLUSSQLPLUS 中令人讨厌的聚合
【发布时间】:2015-01-07 23:52:51
【问题描述】:

SQLPLUS 中令人讨厌的聚合

大家好, 我有下一张桌子:

   col.1   col.2
   2       1-V
   4       2-VV
   6       3-EC
   8       2-GD
   A       5-V
   C       2-EC
   E       2-GD
   10      6-V
   12      2-V
   14      1-GD
   14      1-V

我需要在表上进行一些聚合并获得类似下一个表的内容(仅使用 '-' 之后的值,按 col.2 对行进行分组,例如 [V, VV, EC, GD]):

   Type    count
   EC      2
   GD      3
   V       5
   VV      1

我不知道如何使用“GROUP BY”子句来完成这项任务。

BR 软管

【问题讨论】:

    标签: oracle group-by sqlplus aggregation


    【解决方案1】:

    解决您的问题的一种可能方法是:

    select regexp_replace(col_2, '^\d+-', null), count(1)
    from the_next_table
    group by regexp_replace(col_2, '^\d+-', null);
    

    享受吧。

    PS:当然,这个解决方案在很大程度上取决于您的col.2 数据始终是<some number><the dash symbol><anything> 形式的假设。对于这种情况,此解决方案会去掉 <some number><the dash symbol> 部分,只留下 <anything> 用于聚合。

    【讨论】:

    • @user3801158,那么请不要犹豫,接受或支持您选择的答案,因此我们会因花时间回答您而获得奖励。
    【解决方案2】:

    试试:

    SELECT 
      substr( "col2", instr( "col2", '-' )+1) as "type",
      count(*) as "count"
    from table1
    GROUP BY substr( "col2", instr( "col2", '-' )+1);
    

    演示:http://sqlfiddle.com/#!4/70db1/3

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多