2016-11-02 21 views
0

私はテーブルの列がセッションの長さだけで、長さがゼロで長さがゼロより大きいセッションの数を返したいと思います。SQLは、異なるwhere句で結果を選択して返します

私は2つの別々のコマンド

select count(session_length) from my_table where session_length=0 

select count(session_length) from my_table where session_length>0 

であることを行うことができますしかし、私は一つのテーブルにまとめた結果

答えて

1

あなたは条件付き集約を使用して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 

を使用することができ、謝罪場合、これは謝罪もそう簡単ですあなたが探しています。

関連する問題