2013-05-14 3 views
0

У меня есть один стол сбазы данных запрос для подсчета

ID | NAME | DEPT 
1 | A  | D-1 
2 | B  | D-1 
3 | C  | D-2 
4 | D  | D-3 
5 | E  | D-1 
6 | F  | D-3 
7 | G  | D-4 

Теперь я хочу, чтобы принести результат как

DEPT | COUNT(DEPT) 
D-1  | 3 
OTHERS | 4 

Может ли один помочь мне написать этот запрос?

+6

Мы не пишем для вас код здесь. Что вы пытались сделать? – Kermit

+3

Aoplogies для опрошенных/тегов, тег SQL особенно неприятен на данный момент: S – Andomar

+0

Какая СУБД для этого? –

ответ

12

Вы должны использовать CASE сгруппировать данные по D-1 и Others:

select 
    case when dept = 'D-1' then 'D-1' else 'Others' end as Dept, 
    count(*) as Total 
from yt 
group by case when dept = 'D-1' then 'D-1' else 'Others' end; 

См SQL Fiddle with Demo

+1

+10 rep love ... – Kermit

+0

Gr8 .... это работает. благодаря – Navnath

0

Я думаю, вы хотите, чтобы максимальное произошло Dept со счетом и другой отдел с суммой остальных отдела вхождение.

хорошо вы можете сделать, как показано ниже -

Select dept, count(*) cnt 
    from Table_name 
group by dept 
having count(*) = (select max(count(*)) from table_name group by dept) 
union 
select 'Other' dept, count(*) cnt 
    from table_name 
where dept not in (select dept 
         from table_name 
         group by dept 
        having count(*) = (select max(count(*)) 
              from table_name 
              group by dept 
             ) 
        ) 

Я надеюсь, что это то, что вы ищете ..

0
SELECT 
    DEPT, 
    COUNT (DEPT)AS [COUNT(DEPT)] 
FROM(SELECT 
      (CASE DEPT WHEN 'D-1' THEN 'D-1' ELSE 'OTHERS' END) AS DEPT FROM test1) AS tbl 
GROUP BY DEPT 

Пожалуйста, попробуйте выше запрос.

Смежные вопросы