[개발일지-2] SQL 2주차

남승희·2022년 7월 3일
0

Group by, Order by

컴활 1급 필기 공부하면서 Access 프로그램을 처음 접했다. 쿼리,폼,보고서,레이블 등등 엑셀에서 간단한 문서를 작업할땐 들어보지 못하는 용어를 공부하고 익숙하지 않은 프로그램에 대해서 배우니까 도대체 이게 왜 시험과목에 들어가있을까 생각했다. 2급과 변별력을 두고 싶어서? 라고 단순하게 생각했던 것 같다 ..

SQL 강의를 수강하면서 컴활 필기 공부하면서 배웠던 내용들이 나오니까 뭐든 배워놓으면 쓸데없는 지식은 아니구나 라는 걸 다시 한번 느꼈다.

SQL 2주차에서는 쿼리 문법 중 group by, order by에 대해서 배웠다.

범주의 통계를 내주는 Group by

동일한 범주를 갖는 데이터를 하나로 묶어서 통계를 내준다. 개수, 최대와 최소, 평균, 합계 등의 통계를 내준다.
1. count (개수)

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
  1. MAX (최댓값)
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  1. Min (최솟값)
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  1. 평균
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
  1. 합계
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by

select * from 테이블명
order by 정렬의 기준이 될 필드명;

order by는 필드명만 입력해주면 오름차순으로 정렬되고, desc 를 입력하면 내림차순으로 정렬된다.

order by 제대로 알아보기 : 쿼리가 실행되는 순서

select name, count(*) from users
group by name
order by count(*);

위 쿼리가 실행되는 순서는 from - group by - select - order by 순으로 실행된다. users 테이블을 가져오고, 같은 name을 갖는 데이터를 합쳐주고, 합쳐진 데이터가 각각 몇개가 합쳐진 것인지 count해주고, 오름차순으로 정렬해주는 순서이다.

QUIZ. course_id 별 '오늘의 다짐에 달린 평균 like 개수 구해보기

select * from checkins
group by course_id // 이렇게 입력해준 뒤 구하고자 하는 데이터에 맞추어 select 뒤에 정렬

select course_id, avg(likes) from checkins
group by course_id

쿼리 작성 꿀팁

  • show tables 로 어떤 테이블이 있는지 살펴본다.
  • 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 넣어보기
  • 원하는 정보가 없다면 다른 테이블에도 위에 쿼리 넣어보기
  • 테ㅔ이블을 찾았으면 범주를 넣어서 보고 싶은 필드를 찾는다.
  • 범주별로 통계를 보고싶은 필드를 찾는다.
  • SQL 쿼리를 작성한다.

Alias ; 별칭 기능

쿼리가 길어지게 되면 테이블명이 헷갈리는 경우가 발생할 수도 있다.

select * from orders o
where o.course_title = '앱개발 종합반' 
// orders 테이블을 o 라는 별칭을 붙이고, o 테이블의 course_title 이라는 뜻의 o.course_title를 작성한다. 
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
// 이런식으로 count(*) 뒤에 as cnt를 붙여 cnt 라는 별칭을 붙여줄 수도 있다. 

2주차 숙제 : 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기

select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method

2주차도 끝!

profile
조금씩 발전하는 (자기)개발자!

0개의 댓글