20行のテーブルがあり、10行にラベルが付けられA1, A2, A3, ...A10
、他の10行はG1、G2などです。
それらは、0 から 99 までの値の整数を保持します。
たとえば、50〜70などの特定の範囲内にある値を持つ列の数がx(たとえば4)ある行のみを選択したい。
これは可能ですか?
20行のテーブルがあり、10行にラベルが付けられA1, A2, A3, ...A10
、他の10行はG1、G2などです。
それらは、0 から 99 までの値の整数を保持します。
たとえば、50〜70などの特定の範囲内にある値を持つ列の数がx(たとえば4)ある行のみを選択したい。
これは可能ですか?
ブルートフォースアプローチでそれを行う方法は次のとおりです。
select t.*
from (select t.*,
((case when a1 between 50 and 70 then 1 else 0 end) +
(case when a2 between 50 and 70 then 1 else 0 end) +
. . .
(case when a10 between 50 and 70 then 1 else 0 end) +
(case when g1 between 50 and 70 then 1 else 0 end) +
(case when g2 between 50 and 70 then 1 else 0 end) +
. . .
(case when g10 between 50 and 70 then 1 else 0 end)
) n
from t
) t
where n = 4;
. . .
残りの列にも同じロジックを入力する必要があります。