私は自分がやりたいことを説明しようとしてこの奇妙な例を作りました(それはちょっとばかげていますが、私に耐えてください):
次の表を検討してください。
従業員
既婚、認定、宗教は単なるブールフィールドです(Oracleの場合、タイプはNUMBER(1,0)です)。
次の給与カテゴリ内の、各hire_year、既婚、認定、および宗教の従業員の数を表示するSQLを考え出す必要があります。
- A
SALARY > 2000
- B
SALARY BETWEEN 1000 AND 2000
- C
SALARY < 1000
上記のデータセットに基づいて、これが私が得ることを期待しているものです:
これまでのところ、私は次のSQLしか思いつきませんでした。
SELECT
COUNT(CASE WHEN married = 1 THEN 1 END) as MARRIED,
COUNT(CASE WHEN certified = 1 THEN 1 END) as certified,
COUNT(CASE WHEN religious = 1 THEN 1 END) as religious,
hire_year
FROM employees
GROUP BY hire_year;
このSQLを実行した結果は次のとおりです。
これはほとんど私が必要としていることですが、給与の範囲に基づいて、これらのカウンターをさらにグループに分割する必要もあります。
SQL式に基づいてグループをバケットに分割する分析関数が役立つと思いますが、どれが役立つかわかりません。NTILEを試してみましたが、SQL式(など)ではなく、パラメーターとして正の定数が必要ですSALARY BETWEEN X and Y
。