MySQLにおけるHAVING句の使用方法
MySQLのHAVING句は、GROUP BY句の後に結果セットを絞り込むために使用されます。通常は集計関数と組み合わされ、グループ化された結果に条件付きフィルタリングを実行します。
HAVING節の一般的な用法を以下に示します。
- 集計関数使用: HAVING句は集計関数と一緒に使用して、特定の条件を満たすグループ化結果を絞り込むことができます。たとえば、HAVINGを使用して、平均売上高が100を超える営業部門を絞り込むことができます。
SELECT department, AVG(sales) as average_sales
FROM sales_table
GROUP BY department
HAVING average_sales > 100;
- HAVING句で使用できる論理演算子(AND、OR、NOTなど)は、条件を組み合わせてフィルタリングすることを可能にします。たとえば、HAVINGを使用して、平均売上高が100以上でかつ総売上高が1000を超える販売部門をフィルタリングできます。
SELECT department, AVG(sales) as average_sales, SUM(sales) as total_sales
FROM sales_table
GROUP BY department
HAVING average_sales > 100 AND total_sales > 1000;
- 副問い合わせを利用する。HAVING句は副問い合わせを使用して結果をさらに絞り込むことができます。例えば、HAVINGと副問い合わせを使用すると、会社の平均売上高よりも平均売上高が高い営業部門を絞り込むことができます。
SELECT department, AVG(sales) as average_sales
FROM sales_table
GROUP BY department
HAVING average_sales > (SELECT AVG(sales) FROM sales_table);
- 集約関数以外の関数(COUNT、MAX、MINなど)を使用すると、グループ化結果をフィルタリングすることもできます。例えば、HAVING句とCOUNT関数を使用して、5人以上の従業員を持つ部門を抽出できます。
SELECT department, COUNT(employee_id) as num_employees
FROM employees_table
GROUP BY department
HAVING num_employees > 5;
つまり HAVING 句では、特定の条件に基づいてグループ化された結果をフィルタリングし、条件を満たす結果を返すことができます。