본문 바로가기
IT공부일지/개인학습 정리

SQL공부 일지_2주차(스파르타코딩클럽)

by 욤뇸 2022. 8. 3.
반응형
학습과정과 현재
1주 - Select, Where
2주 - Group by, Order by
3주 - Join
4주 - Subquery, 그 외

 
현재까지 배운 SQL에서는 where만 사용해서 여러개의줄을 생성해야 했다면 다른 문법도 배워보장

1. Group by  (’~별로 묶어서 )라고 할때 많이 사용된다.

group by는 동일한 범주를 갖는 데이터를 하나로 묶어서 범주 별로 통계를 내주는 것
 
예시)

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

이때 쿼리가 실행되는 순서 from → group by → select
 

* 동일한 범주의 갯수 구하기

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명
 
예시)

select week, count(*) from checkins
group by week;

* 동일한 범주의 최솟값 구하기

select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
예시)

select week, min(likes) from checkins
group by week;

*동일한 범주에서의 최댓값 구하기

select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
 
예시)

select week, max(likes) from checkins
group by week;

 

*동일한 범주의 평균 구하기

select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
 
예시)

select week, avg(likes) from checkins
group by week;

 

*동일한 범주의 합계 구하기

select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
예시)

select week, sum(likes) from checkins
group by week;

tip. 소수점 값을 반올림 하고 싶을 때  - round(  ,n) 소수 n째 자리

select week, round(avg(likes),1) from checkis
group by week

※세미콜론(;)은 붙여도 되고 안붙여도 된다
→ (이 쿼리가 여기 부터 여기까지다 라고 보여주는 의미일 뿐 어떠한 기능도 하지 않기 때문이다.)
 


※ 주의사항

group by 에서 주의해야 할 오류들_1

select * from orders
group by payment_method

이렇게 칠 경우에는 통계를 내라 는 말이 없으니 그냥 어떤 것들이 있는지 보여준다.
 
group by 에서 주의해야 할 오류들_2

select count(*) from orders
group by payment_method

이럴 경우, 항목 명은 나오지 않고 카운트 된 것들만 나옴.
 
—> 이렇게 고치는게 옳다.

select payment_method count(*) from orders
group by payment_method

 

더보기

2. order by (정렬이 필요할 때 ) _ 오름차순(osc), 내림차순(desc)

정렬을 하고 싶을 때 사용 되는 문법으로 모든 sql 쿼리에 적용될 수 있는 기능이다.
 
select * from 테이블명
order by 정렬의 기준이 될 필드명;
 

여러가지가 쓰일 때 SQL쿼리가 실행 되는 순서 from → group by → select → order by

 
예시)

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

select * from users
group by name
order by count(*) 이렇게 작성 후 ,
 
select name, count(*) from users로 첫부분을 바꾸는 형태로 연습하기
 
간혹 , oreder by 가 숫자만 정렬한다고 오해하는 경우가 있지만 알파벳, 한글 등 모든 것들을 정렬 할 수 있다.
 

유용한 문법 추가!

별칭 기능 :  Alias
쿼리가 점점 길어지면서 어떤 테이블 속의 어떤 항목인지 햇갈릴 수 있음 그럴 때 사용함.
 
select * from orders o
where o.course_title = '앱개발 종합반'
 
--> 'o'라고 따로 칭해지는 orders테이블 속의 course_title이다.
 
 

2주차 과정의 숙제

Q) 네이버 이메일을 사용하여 앱 개발 종합반을 신청한 주문의 결제수단별 주문건수는?
 
내 오답 ) where을 두번 사용함
select payment_method, count(*) from checkins
where course_title = '앱개발 종합반'  and
where like '%naver.com'
group by payment_method
 
정답)
select payment_method, count(*) from checkins
where course_title = '앱개발 종합반'  and like '%naver.com'
group by payment_method
 
 
 
 
 
 

반응형