2016-11-02 2 views
0

У меня есть стол, столбец которого является только длительностью сеанса, и я хотел бы вернуть число сеансов с нулевой длиной и количеством сеансов с длиной больше нуля.SQL, return select results with different where clauses

я могу сделать это с двумя отдельными командами

select count(session_length) from my_table where session_length=0 

select count(session_length) from my_table where session_length>0 

Но я хотел бы видеть результаты, объединенные в одной таблице

ответ

1

Вы можете сделать это с одним запросом с использованием условной агрегации.

select 
count(case when session_length = 0 then 1 end), 
count(case when session_length > 0 then 1 end) 
from my_table 
+2

вы должны изменить 'count' на' sum' –

+1

Я думаю, 'count' принесет вам тот же результат. –

+0

вы правы! 'case' возвращает' null', который не будет считаться. –

1
select 1 as QryNo, count(session_length) as SessLen 
from my_table 
where session_length=0 

union 

select 2 as QryNo, count(session_length) as SessLen 
from my_table 
where session_length>0 

или

select 
    case 
     when session_length = 0 then 1 
     else 2 
    end as QryNo, 
    count(session_length) as SessLen 
from my_table 
0

Это может быть слишком просто так извинениями, если я неправильно понял ваш вопрос, но Вы можете использовать

select count(session_length) from my_table where session_length >= 0 

Опять же, Извинения, если это не то, что ты ищешь.