2014-01-24 2 views
0

Я пытаюсь подсчитать, как часто слово появляется в разных столбцах в выражении Select. Например:Подсчитайте слово над несколькими столбцами

column1 column2 column3 
No  No  No 
Yes  Yes  No 
Yes  No  Yes 
Yes  Yes  Yes 

Так что, если я буду искать после слова «Да» результат был бы как:

count1 count2 count3 
3  2  2 

Может кто-нибудь мне помочь?

ответ

1
select count(case when column1 = 'Yes' then 1 end) as count1, 
     count(case when column2 = 'Yes' then 1 end) as count2, 
     count(case when column3 = 'Yes' then 1 end) as count3 
from the_table 

Это работает, потому что случай возвратит значение NULL, если условие не выполнено. Агрегаты игнорируют значения NULL, и поэтому count() будет учитывать только значения yes.

0

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

select 
    count(case when column1 = 'Yes' then 1 else null end) as count1, 
    count(case when column2 = 'Yes' then 1 else null end) as count2, 
    count(case when column3 = 'Yes' then 1 else null end) as count3 
from mytable; 
Смежные вопросы