SQL 2주차 단어/문법 정리
데이터 분석의 목적
: 데이터베이스에 쌓여있는 날것의 데이터 > 의미를 갖는 '정보'로의 변환
'범주 (Category)'별로 분리도 가능
EX) 과목별, 성씨별 등
- 통계 구하기 -
Group by 절
: 동일한 범주의 데이터를 묶어서, 범주별 통계를 내줌
select (범주별로 세어주고 싶은 필드명), count(*) from 테이블명
group by (범주별로 세어주고 싶은 필드명)
- 성씨별 회원수를 Group by로 쉽게 구해보기 -
select name, count(*) from users
group by name
1) users 테이블에서 데이터를 불러온다.
2) name 필드에서 동일한 값을 갖는 데이터를 하나로 합쳐준다.
3) name, count(*)(=데이터의 수를 합친 값)를 출력한다.
> 결과값
groud by
- Min
: 동일한 필드에서 최솟값 구하기
select (범주가 담긴 필드명), min(최솟값을 알고 싶은 필드명) from 테이블명
group by (범주가 담긴 필드명)
- 주차별 'week'의 좋아요 최솟값 구하기 -
select week, min(likes) from checkins
group by week;
> 결과값
groud by
- Max
: 동일한 필드에서 최댓값 구하기
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
- 주차별 'week'의 좋아요 최댓값 구하기 -
select week, max(likes) from checkins
group by week;
> 결과값
groud by
- Avg
: 동일한 필드에서 평균값 구하기
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
- 주차별 'week'의 좋아요 평균값 구하기 -
select week, avg(likes) from checkins
group by week;
> 결과값
groud by
- Sum
: 동일한 필드에서 합계 구하기
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
- 주차별 'week'의 좋아요 합계 구하기 -
select week, sum(likes) from checkins
group by week;
> 결과값
Order by
: 선택한 필드의 데이터를 정렬해준다
select * from 테이블명
order by 정렬의 기준이 될 필드명;
+) 기본적으로 오름차순 정렬
- 성씨별 회원수를 Order by로 정렬하기 -
select name, count(*) from users
group by name
order by count(*) desc
+) desc : 내림차순으로 정렬
> 결과값
+) Where + Group by + Order by 함께 사용해보기
1) order 테이블에서 course_title = "웹개발 종합반"을 조회
2) payment_method를 카테고리화
3) payment_method별 주문건수를 Count
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
> 결과값
- SQL 쿼리가 실행되는 순서 -
- 쿼리 진행 순서 -
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
: from > where > group by > select
+) order by가 추가된다면, order by는 제일 나중에 실행됩니다!
: 정렬이기 때문에
- 이 외 유용한 문법 -
Alias
: 별칭 기능, 약자 / as
- 테이블 명 뒤에 Alias 추가 -
select * from orders o
where o.course_title = '앱개발 종합반'
- 출력될 필드에 Alias 추가 -
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
+) as를 붙인 뒤 변경할 필드명을 붙여줘야 한다.
> 결과값
- 복습하기 -
[ Group by ]
- 앱개발 종합반의 결제수단별 주문건수 세어보기 -
SELECT payment_method, count(*) as cnt from orders
where course_title = '앱개발 종합반'
group by payment_method
[ Group by ]
- Gmail을 사용하는 성씨별 회원수 세어보기 -
SELECT name, count(*) as cnt from users
where email like '%gmail.com'
group by name
[ Group by ]
- course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기 -
SELECT course_id, avg(likes) from checkins
group by course_id
[ Order by ]
- 문자열 기준으로 정렬 -
> 영어
select * from users
order by email;
-
> 한글
select * from users
order by email;
[ Order by ]
- 시간 기준으로 정렬 -
select * from users
order by created_at desc
+) 최근 데이터부터 보고싶을 때 유용함
> 결과값