항해99/개강 준비 과정 - 필수 트랙
엑셀보다 쉬운 SQL - 2주차(2024-01-25)
nsean
2024. 1. 25. 19:28
이번 주차에 배울 내용
- 통계: 최대 / 최소 / 평균 / 개수
- 동일한 범주의 데이터를 묶어주는 Group by
- 데이터를 정렬해보자: Order by
1주차에서 배운 내용만을 사용하여 과목별 신청자수를 구한다면, 그 코드는
select count(*) from orders
where course_title = "앱개발 종합반";
select count(*) from orders
where course_title = "웹개발 종합반";
이렇게 두 번 반복해야된다. 이렇게 두번만 반복해도 되는 경우가 있지만, 일반적인 데이터베이스에서는 이보다 훨씬 다양한 종류의 변수들이 있을 것이기에, Group by 를 사용해줘야 한다.
select course_title, COUNT(*) from orders o
group by course_title ;
SQL 쿼리가 실행되는 순서
SQL에서 쿼리가 실행되는 순서를 아는 것은 정말 중요하다고 한다.
위의 코드의 경우 from-> group by-> select 순서로 실행된다.
group by를 활용하여 다양한 경우에서의 통계를 구할 수 있는데,
- count(*)
- min()
- max()
- avg()
- sum()
등이 이에 해당된다.
Order by
이 쿼리문은 해당되는 값에 따라 정렬을 해준다.
select name, count(*) from users
group by name
order by count(*);
select name, count(*) from users
group by name
order by count(*) desc;
위의 경우 오름차순, 아래의 경우 내림차순이다
또한 실행되는 순서는 from → group by → select → order by 순으로 실행된다.
order by는 결과물을 정렬해주는 것이기 때문에 가장 나중에 실행된다.
다음은 쿼리문 작성을 할 때의 팁이라고 한다.
- show tables로 어떤 테이블이 있는지 살펴보기
- 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
- 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
- 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
- 범주별로 통계를 보고싶은 필드를 찾기
- SQL 쿼리 작성하기!
숙제: 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
SELECT payment_method , COUNT(*) FROM orders o
WHERE o.email LIKE '%@naver.com' AND o.course_title = '앱개발 종합반'
GROUP BY payment_method
ORDER BY COUNT(*) DESC