ホームページ > データベース > mysql チュートリアル > MySQLで集計関数をどのように使用しますか(例:Count、Sum、Avg、Min、Max)?

MySQLで集計関数をどのように使用しますか(例:Count、Sum、Avg、Min、Max)?

Emily Anne Brown
リリース: 2025-03-19 13:24:28
オリジナル
882 人が閲覧しました

MySQL(例:Count、Sum、Avg、Min、Max)で集約関数をどのように使用しますか?

MySQLの集計関数は、一連の値で計算を実行し、単一の値を返すために使用されます。最も一般的な集計関数を使用する方法は次のとおりです。

  1. count() :この関数は、指定された条件に一致する行数を返します。式がnullでないすべての行または行のみを数えることができます。

     <code class="sql">SELECT COUNT(*) FROM employees; SELECT COUNT(employee_id) FROM employees WHERE department = 'IT';</code>
    ログイン後にコピー
  2. sum() :この関数は、数値列の合計を計算します。ヌル値を無視します。

     <code class="sql">SELECT SUM(salary) FROM employees WHERE department = 'Sales';</code>
    ログイン後にコピー
  3. AVG() :この関数は、数値列の平均を計算します。また、ヌル値も無視します。

     <code class="sql">SELECT AVG(salary) FROM employees WHERE department = 'Marketing';</code>
    ログイン後にコピー
  4. min() :この関数は、指定された列の最小値を返します。

     <code class="sql">SELECT MIN(salary) FROM employees;</code>
    ログイン後にコピー
  5. max() :この関数は、指定された列の最大値を返します。

     <code class="sql">SELECT MAX(salary) FROM employees;</code>
    ログイン後にコピー

MySQLの集計関数を使用して、句ごとにグループを使用する方法を説明できますか?

GROUP BY 、指定された列に同じ値を要約行にあるグループの行に合わせて、集計関数と組み合わせて使用​​されます。使用方法は次のとおりです。

 <code class="sql">SELECT department, COUNT(*) as employee_count, AVG(salary) as avg_salary FROM employees GROUP BY department;</code>
ログイン後にコピー

この例では、 employeesテーブルの行はdepartmentの列によってグループ化されています。 COUNT(*)関数は各部門の従業員数をカウントし、 AVG(salary)各部門内の平均給与を計算します。

覚えておくべき重要なポイント:

  • GROUP BYにすべての非凝集列を含める必要があります。
  • The GROUP BY clause is typically used when you want to apply aggregate functions to grouped data.

MySQLで集計関数を使用する際に避けるべき一般的な間違いは何ですか?

MySQLで集計関数を操作する場合、次の一般的な間違いを避けることが重要です。

  1. グループを使用するのを忘れてください:凝集していない列をSelectステートメントに集約関数とともに含める場合、それらの列にGROUP BY使用する必要があります。そうしないと、エラーが発生します。

     <code class="sql">-- Incorrect SELECT department, COUNT(*) FROM employees; -- Correct SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    ログイン後にコピー
  2. グループなしで凝集列と非凝集列を混合する:骨材と非凝集列を選択ステートメントに混合する場合、エラーや予期しない結果を避けるためにGROUP BYを使用してください。
  3. ヌル値を無視するSUMAVG関数はNULL値を無視することに注意してください。 NULL値が重要な場合は、個別に処理する必要がある場合があります。
  4. 非数値データで集計関数を使用するSUMAVGなどの関数は、数値データを対象としています。非数値データ型(例、文字列)でそれらを使用すると、エラーまたは予期しない結果が得られます。
  5. 誤解カウント(col_name)COUNT(col_name)は、指定された列で非ヌル値をカウントしますが、 COUNT(*) 、他の列にヌル値があるものを含むすべての行をカウントします。

MySQLで集計関数を使用してパフォーマンスを向上させるクエリを最適化するにはどうすればよいですか?

集計関数を使用してクエリを最適化すると、パフォーマンスが大幅に向上する可能性があります。ここにいくつかの戦略があります:

  1. インデックスの使用:条項によるWHEREGROUP BY 、およびORDER BYに関係する列がインデックス化されていることを確認します。これにより、集約プロセスがスピードアップできます。

     <code class="sql">CREATE INDEX idx_department ON employees(department);</code>
    ログイン後にコピー
  2. [select *SELECT *を使用する代わりに、必要な列のみを使用しないようにします。これにより、処理する必要があるデータの量が減少します。

     <code class="sql">-- Instead of SELECT * FROM employees GROUP BY department; -- Use SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    ログイン後にコピー
  3. グループの前に使用する場所GROUP BY適用する前に、可能な限り多くの行WHEREできるだけ多くの行を使用します。これにより、グループ化する必要がある行数が減ります。

     <code class="sql">SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department;</code>
    ログイン後にコピー
  4. サブクエリまたは派生テーブルの使用を検討してください。場合によっては、最終的な集約を適用する前にサブクエリを使用してデータを事前に凝集することでパフォーマンスを向上させることができます。

     <code class="sql">SELECT d.department, SUM(e.total_salary) as total_department_salary FROM ( SELECT department, SUM(salary) as total_salary FROM employees GROUP BY employee_id, department ) e JOIN departments d ON e.department = d.department GROUP BY d.department;</code>
    ログイン後にコピー
  5. 説明EXPLAINステートメントを使用して、クエリの実行計画を分析します。これは、潜在的なボトルネックを特定し、それに応じて最適化するのに役立ちます。

     <code class="sql">EXPLAIN SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    ログイン後にコピー

これらの最適化手法を適用することにより、MySQLで集計関数を使用するクエリのパフォーマンスを大幅に向上させることができます。

以上がMySQLで集計関数をどのように使用しますか(例:Count、Sum、Avg、Min、Max)?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート