MySQL의 집계 함수는 일련의 값에 대한 계산을 수행하고 단일 값을 반환하는 데 사용됩니다. 가장 일반적인 집계 기능을 사용하는 방법은 다음과 같습니다.
count () :이 함수는 지정된 조건과 일치하는 행 수를 반환합니다. 표현식이 무효가 아닌 모든 행이나 행만 계산할 수 있습니다.
<code class="sql">SELECT COUNT(*) FROM employees; SELECT COUNT(employee_id) FROM employees WHERE department = 'IT';</code>
Sum () :이 함수는 숫자 열의 총 합을 계산합니다. 널 값을 무시합니다.
<code class="sql">SELECT SUM(salary) FROM employees WHERE department = 'Sales';</code>
avg () :이 함수는 숫자 열의 평균을 계산합니다. 또한 널 값을 무시합니다.
<code class="sql">SELECT AVG(salary) FROM employees WHERE department = 'Marketing';</code>
최소 () :이 함수는 지정된 열에서 가장 작은 값을 반환합니다.
<code class="sql">SELECT MIN(salary) FROM employees;</code>
MAX () :이 함수는 지정된 열에서 가장 큰 값을 반환합니다.
<code class="sql">SELECT MAX(salary) FROM employees;</code>
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
에 응집되지 않은 모든 열을 포함해야합니다.GROUP BY
그룹은 일반적으로 그룹화 된 데이터에 집계 함수를 적용하려는 경우 사용됩니다.MySQL에서 집계 기능으로 작업 할 때는 다음과 같은 일반적인 실수를 피하는 것이 중요합니다.
그룹 사용을 잊어 버리기 : 집계 함수와 함께 Select 문에 응집되지 않은 열을 포함하는 경우 해당 열에 GROUP BY
사용해야합니다. 그렇게하지 않으면 오류가 발생합니다.
<code class="sql">-- Incorrect SELECT department, COUNT(*) FROM employees; -- Correct SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
GROUP BY
사용해야합니다.SUM
및 AVG
기능은 NULL
값을 무시합니다. NULL
값이 중요하면 별도로 처리해야 할 수도 있습니다.SUM
및 AVG
와 같은 함수는 숫자 데이터를위한 것입니다. 숫자가 아닌 데이터 유형 (예 : 문자열)에서이를 사용하면 오류 또는 예상치 못한 결과가 발생합니다.COUNT(col_name)
지정된 열에서 널 값이 아닌 값을 카운트합니다. 반면 COUNT(*)
다른 열의 널 값을 가진 모든 행을 포함하여 모든 행을 계산합니다.집계 기능으로 쿼리를 최적화하면 성능이 크게 향상 될 수 있습니다. 몇 가지 전략은 다음과 같습니다.
인덱스 사용 : WHERE
, GROUP BY
및 ORDER BY
에 관련된 열이 인덱스되어 있는지 확인하십시오. 이것은 집계 과정의 속도를 높일 수 있습니다.
<code class="sql">CREATE INDEX idx_department ON employees(department);</code>
Select * : SELECT *
사용하는 대신 필요한 열만 지정하십시오. 이는 처리해야 할 데이터의 양을 줄입니다.
<code class="sql">-- Instead of SELECT * FROM employees GROUP BY department; -- Use SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
그룹 이전에 사용하십시오 : WHERE
GROUP BY
적용하기 전에 가능한 많은 행을 필터링하십시오. 이렇게하면 그룹화 해야하는 행의 수가 줄어 듭니다.
<code class="sql">SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department;</code>
하위 쿼리 또는 파생 테이블 사용을 고려하십시오 . 경우에 따라 최종 집계를 적용하기 전에 데이터를 사전 응집하기 위해 서브 쿼리를 사용하면 성능이 향상 될 수 있습니다.
<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>
설명 설명 : EXPLAIN
설명을 사용하여 쿼리의 실행 계획을 분석하십시오. 이를 통해 잠재적 인 병목 현상을 식별하고 그에 따라 최적화 할 수 있습니다.
<code class="sql">EXPLAIN SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
이러한 최적화 기술을 적용하면 MySQL에서 집계 기능을 사용하는 쿼리의 성능을 크게 향상시킬 수 있습니다.
위 내용은 MySQL에서 집계 함수를 어떻게 사용합니까 (예 : count, sum, avg, min, max)?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!