Excel関数と同じ出力を提供する変数を選択するにはどうすればよいですか。
COUNTIFS(A1:D1,"<25", A1:D1, ">16")?
つまり私の4つのフィールドの値が16から25の間にある回数を数えます。
これを行うには、count()
およびcase
式を使用します。注:case
にはオプションのelse
句があります。使用しない場合、デフォルトのelse
"値"はnull
です。カウントはnull以外の値のみをカウントするため、これらの観察を組み合わせてコンパクトなコードを記述できます。何がカウントされるかは関係ありません。したがって、case
式は数値を返す可能性があります(1は通常ですが、0も同じように有効であり、値がSUMMEDではなくCOUNTEDであるため、同じ結果になります)-しかし、 ' x 'またはケース式の日付。説明のために、文字列を使用します。
select count( case when col > 16 and col < 25 then 'x' end ) as ct from your_table;
ここに your_table
はテーブルの名前、col
は値を含むcolumnの名前、ct
は結果の列の名前(条件を満たす値の数)。
もちろん、データベースでは同じ結果をより簡単に得ることができます:
select count(*) as ct from your_table where col > 16 and col < 25;
ただし、値は1つの列にあることに注意してください。
代わりに、4つの列と多くの行を持つテーブルがあり、すべての列のすべての値が数値であり、厳密に16〜25 IN EACH ROWの間の値の数を示す列を追加する場合、ソリューションは異なります(ただし、同じアイデアを使用しています):
select col1, col2, col3, col4,
case when col1 > 16 and col1 < 25 then 1 else 0 end +
case when col2 > 16 and col2 < 25 then 1 else 0 end +
case when col3 > 16 and col3 < 25 then 1 else 0 end +
case when col4 > 16 and col4 < 25 then 1 else 0 end as ct
from my_table;
これは、SQLクエリでcase
を使用して行います。
select sum(case when col between 16 and 25 then 1 else 0 end)
from t;
between
はSQLでは包括的であり、排他的ではないため、コードロジックに基づいていることに注意してください。
select sum(case when col > 16 and col < 25 then 1 else 0 end)
from t;
あなたは_'user_table'
_を持っていると考えてください。ユーザーの一部の'status'はactive (code-11)
であり、その他はinactive (code-22)
です。以下のsql
を使用して、アクティブと非アクティブをカウントできます。
select count(case when status = 11 then 1 end) u_active, count(case when status = 22 then 1 end) u_inactive, from user_table;