最初に覚えておくべきことは、ウィンドウ関数(OVER()
など)です。 句)クエリの結果を処理します。つまり、サーバーは最初にクエリを実行し、次にユーザーが定義したウィンドウ関数を適用します。
つまり、同じクエリでウィンドウ関数とgroup by句を実際に使用できますが、次のようにカプセル化する必要があります。
SELECT department_id,
min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;
ただし、これはウィンドウ関数を使用するのに適した場所ではないことに同意します。マットの提案はここで最高です(ROW_NUMBER()
CTE
で またはsubquery
、次にメインのSELECT
で目的の行のみを選択します 。