2014-08-06 3 views
0

У меня есть таблица со столбцом, который содержит цифры от 1 - 5, это выглядит примерно следующимКак подсчитать и заменить элементы в SQL колонке

Column 
1 
2 
4 
3 
2 
1 
5 
2 

Как подсчитать количество раз, каждый число показывает, так что мой финальный стол выглядит следующим образом:

Number | Count 
one | 2 
two | 3 
three | 1 
four | 1 
five | 1 
+0

У вас возникли проблемы с подсчетом или показывая 1 как один и так далее? –

+0

заменяя 1 на один, 2 на два и т. Д. – user3912349

ответ

1

Попробуйте это:

select 
case 
when number = 1 then 'one' 
when number = 2 then 'two' 
when number = 3 then 'three' 
when number = 4 then 'four' 
when number = 5 then 'five' 
end number, 
count 
from 
(select number,count(*) count 
from yourtable 
group by number) s 

В этом случае у ou имеют только 5 значений, поэтому case выполнимо для замены. Однако хорошей практикой было бы использовать таблицу с номером для сопоставления имен, а затем присоединить ее к вашему счетному запросу. Итак, если у вас есть таблица tblMap с 2 колонками - number и name, вы бы сделали;

select name, count(*) 
from 
yourtable t 
inner join tblMap m on t.number = m.number 
group by t.number, name --group by number so that results are ordered by number 
0
SELECT 
     CASE 
      WHEN columnx = 1 THEN 'one' 
      WHEN columnx = 2 THEN 'two' 
      WHEN columnx = 3 THEN 'three' 
      WHEN columnx = 4 THEN 'four' 
      WHEN columnx = 5 THEN 'five' 
      ELSE 'unexpected' END as Number 
    , COUNT(*) as count_of 
FROM YourTable 
GROUP BY 
     CASE 
      WHEN columnx = 1 THEN 'one' 
      WHEN columnx = 2 THEN 'two' 
      WHEN columnx = 3 THEN 'three' 
      WHEN columnx = 4 THEN 'four' 
      WHEN columnx = 5 THEN 'five' 
      ELSE 'unexpected' END 
0

Какой база данных вам это нужно, если оракул, то вы можете использовать ниже запрос при условии, ваш номер находится в диапазоне между 1 и 5373484

-- works only for values between 1 and 5373484 (i.e julian date) 
select to_char(to_date(num_column,'j'),'jsp'),cnt 
from 
(select num_column,count(1) cnt 
    From TableA 
    group by num_column 
) 
0
select 
case 
when [Column] = '1' then 'One' 
when [Column] = '2' then 'Two' 
when [Column] = '3' then 'Three' 
when [Column] = '4' then 'Four' 
when [Column] = '5' then 'Five' 
end [Number] 
, COUNT (*) as [Count] from Table_Name 
group by [Column] 
Смежные вопросы