본문 바로가기
데이터분석

[SQL 기본] 요약정리_집계함수, GROUP BY, HAVING, ORDER BY

by 규랃 2024. 1. 30.
728x90
반응형

4️⃣ 집계함수

집계함수는 데이터를 집계한 통계값을 반환해 주는 함수들을 말합니다.

  • SUM() : 컬럼의 합계를 반환
필통에 있는 연필의 가격을 전부 합해주세요.

SELECT SUM(필기구가격)
FROM 필통
WHERE 필기구종류  = '연필'
  • AVG() : 컬럼의 평균을 반환
마케팅팅 구성원들의 평균 연봉을 출력해 주세요.

SELECT AVG(연봉)
FROM 직원
WHERE 부서 = '마케팅'
  • MIN() : 컬럼의 최솟값을 반환
이번 대회의 가장 빠른 100m 달리기 기록을 출력해 주세요.

SELECT MIN(100m달리기기록)
FROM 육상대회기록
WHERE 대회이름 = '이번대회'
  • MAX() : 컬럼의 최댓값을 반환
이번 대회의 가장 빠른 100m 달리기 기록을 출력해 주세요.

SELECT MIN(100m 달리기 기록)
FROM 육상대회기록
WHERE 대회이름 = '이번대회'
  • COUNT() : 행의 개수를 셈
23년 12월에 가입한 신규가입자를 세어 출력해 주세요.

SELECT COUNT(*) AS 회원수
FROM 회원
WHERE 가입일 BETWEEN '2023-12-01' AND '2023-12-31'
  • COUNT(DISTINCT) : 중복을 제외한 행의 개수를 셈
12월에 진행한 이벤트의 당첨자 수를 세어 출력해 주세요. 부정 당첨 방지를 위해 중복 신청 건은 제외해 주세요. 

SELECT COUNT(DISTINCT 휴대폰 번호)
FROM 이벤트신청
WHERE 이벤트 진행일자 BETWEEN '2023-12-01' AND '2023-12-31'

5️⃣ GROUP BY : 데이터를 그룹화

  • 데이터를 그룹별로 나누는 명령어입니다.
  • 그룹으로 나누는 컬럼은 여러 개를 정의할 수 있지만 그룹핑하고자 하는 컬럼들은 SELECT 정과 GROUP BY 절 모두 명시해야 합니다. (집계함수는 명시하지 않습니다.)
마케팅팀 구성원들의 수를 직급별로 세어 출력해 주세요.

SELECT 직급, COUNT(*)
FROM 직원
WHERE 부서 = '마케팅'
GROUP BY 직급

===

마케팅팀 구성원들의 수를 직급과 입사연도별로 세어 출력해 주세요.

SELECT 직급, 입사연도, COUNT(*)
FROM 직원
WHERE 부서 = '마케팅'
GROUP BY 직급, 입사연도
  • GROUP BY는 대부분 집계함수와 함께 많이 쓰이지만 처음 보는 테이블에 기록되는 Record값의 종류를 확인하기 위해 활용하기도 합니다.
마케팅팀 구성원들의 직급 구성을 출력해 주세요.

SELECT 직급
FROM 직원
WHERE 부서 = '마케팅'
GROUP BY 직급

6️⃣ HAVING : GROUP BY의 조건절

  • 그룹핑한 결과에 대한 필터링을 걸 수 있는 명령어입니다.
  • WHERE는 테이블 조회에 대한 조건절이라면 HAVING은 결과에 대한 조건절이기 때문에 필터링에 대한 우선순위는 WHERE에 있습니다.
구성원이 10명 이상인 팀을 출력해 주세요.

SELECT 팀, COUNT(*)
FROM 직원
GROUP BY 팀
HAVING COUNT(*) >= 10

===

2021년 이후에 입사한 구성원이 5명 이상인 팀을 출력해 주세요.

SELECT 팀, COUNT(*)
FROM 직원
WHERE 입사일 >= '2021-01-01'
GROUP BY 팀
HAVING COUNT(*) >= 5

7️⃣ ORDER BY : 결과에 대한 정렬

  • 원하는 값을 정의한 후 해당 결과에 대한 값을 순서에 맞게 출력하고자 할 때 사용하는 정렬 명령어입니다.
  • 오름차순: 디폴트 설정이 오름차순이 되어있으나 명시하려면 ASC라는 키워드로 정의한다.
  • 내림차순 : 내림차순을 할 경우 DESC라는 키워들을 필수로 입력해야 한다.
마케팅 팀원을 입사순을 정렬하여 출력해 주세요.

SELECT 구성원 이름
FROM 직원
WHERE 부서 = '마케팅'
ORDER BY 입사일

===

채널별로 사용한 마케팅 비용이 큰 순서대로 출력해 주세요. 

SELECT 채널, SUM(비용) AS 사용비용
FROM 마케팅비
ORDER BY 사용비용 DESC
728x90
반응형