□投稿者/ 魔界の仮面弁士 -(2022/11/21(Mon) 11:54:58)
| ■No100904 (鏡月 さん) に返信 > SQL実行速度が遅いのですが データベース側が該当している場合は、依頼No 列に <ビットマップ・インデックス> を張ると早くなるかも。
> 下記サンプルテーブルを使用し数量フィールドの集計を行いたいと考えております。 > 集計の条件は「依頼No,作業No」毎に集計しますが作業Noにnullが登録されている依頼Noは出力結果の対象外とします。 サンプルデータのデータ件数次第では、ウィンドウ関数の方が探索パスが少なくて済むかも。
WITH X AS (SELECT 依頼No, 作業No, SUM(数量) OVER (PARTITION BY 依頼No, 作業No) AS 数量 , MIN(CASE WHEN 作業No IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY 依頼No) AS P FROM サンプルテーブル) SELECT DISTINCT 依頼No, 作業No, 数量 FROM X WHERE P = 1 -- ORDER BY 依頼No, 作業No |
|