WHERE
절은 개별 행을 필터링하는 데 사용되며, 그룹화 또는 집계되기 전에 적용됩니다.
HAVING
절은 그룹화된 결과를 필터링하는 데 사용되며, 그룹화 또는 집계된 후에 적용됩니다.
WHERE 절은 그룹화 또는 집계되기 전의 개별 행에 적용됩니다.
-- salary가 50000 이상인 직원들 선택
SELECT *
FROM employees
WHERE salary >= 50000;
-- 특정 부서(department_id가 10인 부서)의 직원들 선택
SELECT *
FROM employees
WHERE department_id = 10;
HAVING 절은 GROUP BY 절과 함께 사용되며, 그룹화된 데이터에 대한 조건을 지정하는 데 사용됩니다. HAVING 절은 그룹화 또는 집계된 후의 결과에 적용됩니다.
-- 각 부서의 평균 급여가 60000 이상인 부서 선택
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) >= 60000;
-- 직원 수가 5명 이상인 부서 선택
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 5;
-- 특정 부서 중 직원 수가 5명 이상이고 평균 급여가 60000 이상인 부서 선택
SELECT department_id, AVG(salary) AS avg_salary, COUNT(*) AS employee_count
FROM employees
WHERE department_id IN (10, 20, 30) -- 특정 부서 조건
GROUP BY department_id
HAVING COUNT(*) >= 5 AND AVG(salary) >= 60000;
COUNT
함수는 행의 수를 세는 데 사용되며,SUM
은 숫자 컬럼의 값들의 합계를 계산하는 데 사용됩니다.
COUNT
함수는 데이터베이스 테이블에서 특정 컬럼의 행 수를 계산하는 데 사용됩니다. 주로 레코드의 개수를 세는 데 사용되며, 특정 조건을 만족하는 행의 수를 세거나 전체 행의 수를 셀 수 있습니다.
SELECT COUNT(*)
FROM 테이블명;
SELECT COUNT(컬럼명)
FROM 테이블명;
SELECT COUNT(컬럼명)
FROM 테이블명 WHERE 조건;
SUM
함수는 지정된 숫자 컬럼의 값들의 합계를 계산하는 데 사용됩니다. 주로 숫자 데이터를 집계할 때 사용됩니다.
SELECT SUM(컬럼명) FROM 테이블명;
SELECT SUM(컬럼명) FROM 테이블명 WHERE 조건;
# 하나의 입장권고유번호에 대해 예매건수<취소건수인 데이터 찾기
SELECT 입장권고유번호
FROM kopis_2021_12_first
GROUP BY 입장권고유번호
WHERE COUNT(`예매/취소구분`=1)<COUNT(`예매/취소구분`=2);
입장권고유번호에 대해 예매건수<취소건수인 데이터가 있는지 확인할 때 위의 쿼리는 오류가 발생합니다.
WHERE
절은 그룹화된 결과에 조건을 적용할 수 없기 때문에, HAVING
절을 사용해야 합니다.
COUNT
함수는 조건에 따라 값을 세는 것이 아니라, 조건이 참인 경우에만 카운트합니다. 따라서, SUM
함수를 사용합니다.
SELECT 입장권고유번호
FROM kopis_2021_12_first
GROUP BY 입장권고유번호
HAVING SUM(`예매/취소구분` = 1) < SUM(`예매/취소구분` = 2);
💡 질문과 피드백은 댓글에 남겨주시기 바랍니다.
❤️ 도움이 되셨다면 공감 부탁드립니다.