데이터베이스를 쿼리할 때 AVG()와 같은 집계 함수를 사용하여 요약 통계나 그룹 데이터를 계산하는 것이 일반적입니다. 그러나 집계 함수 사용을 관리하는 특정 규칙이 있으며, 이로 인해 오류가 발생할 수 있습니다.
일반적인 오류 중 하나는 "ERROR 1111(HY000) ): 그룹 함수의 잘못된 사용'은 WHERE 절에서 집계 함수를 잘못 사용한 경우 발생합니다. 문제를 설명하기 위해 예를 생각해 보겠습니다.
문제: ec, name, code, dob 및 급여 속성이 있는 "staff" 테이블이 있는 경우 목록에 대한 쿼리를 작성합니다. 평균연봉보다 많은 연봉을 받는 직원.
잘못 해결 방법:
select * from staff where salary > avg(salary);
이 잘못된 해결 방법에서는 집계 함수 AVG()가 WHERE 절에 배치되는데 이는 SQL 구문에서 허용되지 않습니다.
문제를 해결하려면 다음 두 가지 옵션이 있습니다.
1. WHERE 절에서 하위 쿼리 사용:
select * from staff where salary > (select avg(salary) from staff)
이 쿼리는 평균 급여를 하위 쿼리로 계산한 다음 이를 외부 쿼리의 각 직원 급여와 비교합니다.
2. 그룹화 및 필터링을 위해 HAVING 절 사용:
select deptid, COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
이 쿼리는 HAVING 절을 사용하여 특정 속성을 가진 그룹을 선택하기 위한 조건을 지정합니다(이 경우 직원이 2명 이상인 부서). ).
집계 함수는 다음 위치에서만 사용할 수 있다는 점을 기억하는 것이 중요합니다. SQL 쿼리에서:
집계 함수의 오용을 방지하면 SQL 쿼리의 유효성과 효율성이 보장됩니다.
위 내용은 SQL WHERE 절에서 AVG()와 같은 집계 함수를 어떻게 올바르게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!