Oracle: how to “group by” over a range?

后端 未结 10 1577
隐瞒了意图╮
隐瞒了意图╮ 2020-12-07 22:26

If I have a table like this:

pkey   age
----   ---
   1     8
   2     5
   3    12
   4    12
   5    22

I can \"group by\" to get a count

10条回答
  •  忘掉有多难
    2020-12-07 23:15

    My approach:

    select range, count(1) from (
    select case 
      when age < 5 then '0-4' 
      when age < 10 then '5-9' 
      when age < 15 then '10-14' 
      when age < 20 then '15-20' 
      when age < 30 then '21-30' 
      when age < 40 then '31-40' 
      when age < 50 then '41-50' 
      else                '51+' 
    end 
    as range from
    (select round(extract(day from feedback_update_time - feedback_time), 1) as age
    from txn_history
    ) ) group by range  
    
    • I have flexibility in defining the ranges
    • I do not repeat the ranges in select and group clauses
    • but some one please tell me, how to order them by magnitude!

提交回复
热议问题