オラクルでのグループ分けと同じグループ間の比較方法は何ですか?
Oracleでは、GROUP BY句を使用してデータをグループ化することができます。グループ化後には、HAVING句を使用して同じグループを比較することができます。
以下は、従業員テーブルを部門別にグループ化し、各部門の平均給与を比較する方法を示すクエリの例です。
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;
クエリ内で、まずは部門ごとにグループ化するためにGROUP BY句を使用し、その後各部門の平均給与を計算します。最後に、HAVING句を使用して平均給与が5000よりも大きい部門を選択します。
同じグループを比較する場合は、WHERE句ではなくHAVING句を使用する必要があります。なぜなら、WHERE句はデータをグループ化する前にフィルタリングし、HAVING句はグループ化した後にデータをフィルタリングするからです。