2013-04-26 92 views
1

我有一個Oracle數據庫表以下值是否可以按某些值分組?

+------+--------+ 
| id | Name | 
+------+--------+ 
| 0 | One | 
| 1 | Two | 
| 2 | Three | 
| 3 | four | 
| 4 | One | 
| 5 | One | 
| 6 | Two | 
| 7 | five | 
+------+--------+ 

我想指望其名「一號」的行數,「兩課」,名稱的休息。 結果集應該像

+------+--------+ 
| name | count | 
+------+--------+ 
| One | 3  | 
+------+--------+ 
| Two | 2  | 
+------+--------+ 
| Rest| 3  | 
+------+--------+ 

任何幫助嗎?

回答

4
select 
    case name 
    when 'One' then 'One' 
    when 'Two' then 'Two' 
    else 'Rest' 
    end name, 
    count(*) 
from 
    my_table 
group by 
    case name 
    when 'One' then 'One' 
    when 'Two' then 'Two' 
    else 'Rest' 
    end 

避免重複:

select 
    name, 
    count(*) 
from (
    select 
    case name 
     when 'One' then 'One' 
     when 'Two' then 'Two' 
     else 'Rest' 
    end name 
    from 
    my_table) 
group by 
    name 
+0

非常感謝。另外我正在看解碼功能。 – 2013-04-26 08:38:28

+0

我會使用Case而不是Decode() - 它符合ANSI標準,更靈活,具有短路評估功能,並且在更符合SQL的情況下處理空值。 – 2013-04-26 08:39:45

+0

好的。謝謝你的比較 – 2013-04-26 08:54:14

相關問題