
아침운동 클리어 : )
JUST DO IT.
집계 함수: 여러 행 또는 열로부터 하나의 결과값을 반환
전체 데이터를 대상으로 사용하거나, 특정 컬럼을 기준으로 사용 가능
특히, 특정 컬럼을 기준으로 집계 함수를 사용할 경우, GROUP BY 절을 반드시 사용!
집계 함수는 SELECT 문에서 사용, 종류는 총 5가지
+) MIN, MAX 함수는 숫자 형식 뿐 아니라, 날짜 형식에도 사용 가능.
각 집계 함수 사용 (예)
#1. 전체 데이터 갯수 세기
select count(*)as cnt
from 테이블
#2. 전체 데이터 평균 나이 구하기
select avg(나이)as avg_age
from 테이블
#3. 전체 데이터 최대 나이 구하기
select max(나이)as max_age
from 테이블
#4. 전체 데이터 최소 나이 구하기
select min(나이)as min_age
from 테이블
#5. 전체 데이터 나이합계 구하기
select sum(나이)as sum_age
from 테이블
#6. 여러 집계함수의 동시사용
select count(*)as cnt,
avg(나이)as avg_age,
max(나이)as max_age,
min(나이)as min_age,
sum(나이)as sum_age,
from 테이블
GROUP BY: 집계 함수에 그룹(기준)이 더해진 개념
특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 주로 사용
작성 방법
1) SELECT 뒤 기준컬럼 작성
2) 집계 함수 작성
3) WHERE절 뒤 GROUP BY 기준컬럼 작성 (WHERE 절 생략 가능)
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
SUB QUERY: 복잡한 연산 시, 최종 결과를 반환하기 위한 중간 테이블의 역할
사용 이유:
N번의 쿼리문 실행을 1번의 쿼리문으로 실행하여
쿼리의 결과값을 가지고 추가 연산을 하기 위해
실행 순서:
서브쿼리 실행(안쪽에 위치한 쿼리) > 메인쿼리 실행(바깥쪽에 위치한 쿼리)
쿼리의 가장 안쪽부터, 바깥쪽 쿼리를 실행하며 최종 결과값을 반환
특징:
() 안에 SELECT, FROM 을 반드시 명시
쿼리 마지막에 ; 기호 사용 불가
ORDER BY 절 사용 불가
종류:
1) 중첩(일반) 서브쿼리: WHERE 절에서 사용
2) 스칼라 서브쿼리: SELECT 절에서 사용, 하나의 컬럼처럼 사용, 서로 다른 테이블 필요
3) 인라인 뷰 (가장 많이 사용):
FROM 절에서 사용, 하나의 테이블처럼 사용, AS 구문을 사용하여 명칭 반드시 기재!
✔️ 문제 #1: GROUP BY 절을 사용하여, 특정 데이터값 추출
✔️ 작성 쿼리
select serverno ,
count(distinct game_actor_id) cnt_id,
avg(`exp`) avg_exp
from basic.users
group by serverno
order by serverno
;
✔️ 실행 결과
✔️ 문제 #2: GROUP BY 와 HAVING 절을 사용하여, 특정 데이터값 추출
✔️ 작성 쿼리
select `date` ,
count(distinct game_actor_id) cnt_id
from basic.users
group by `date`
having count(distinct game_actor_id) > 10
order by 1 desc
;
✔️ 실행 결과
✔️ 문제 #3: SUB QUERY 사용하여, 특정 데이터값 추출
✔️ 작성 쿼리
select a.`date`,
a.cnt_id
from
(
select `date`,
count(distinct game_actor_id) cnt_id
from basic.users
group by `date`
) a
where a.cnt_id > 10
order by 1 desc
;
✔️ 실행 결과
✔️ 참고
1. DBeaver Public Key Retrieval is not allowed 에러 해결방법
오늘의 한 줄.
오늘 하루도 알차게, 잘 보냈다!