Q. SQL로 통계(최대, 최소, 평균, 개수)를 내고 싶을 때 어떻게 해야 할까?
A. Group by절을 사용해서 Order by로 정렬하자.
Group by: 동일한 범주의 데이터를 묶어주는 절
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
// 성씨별 회원수 구하기
// 실행 순서: from -> group by -> select
1. from users: users 테이블에서 데이터를 불러오기
2. group by name: name이라는 필드에서 동일한 값을 갖는 데이터별로 묶어주기
3. select name, count(*): 이름과 count(*)를 출력해 주는데, 여기서 count(*)는 group by로 합쳐진 데이터의 개수
select name, count(*) from users
group by name;
Order by: 데이터를 오름차순 또는 내림차순으로 깔끔하게 정렬할 때
// users 테이블에서 이름별로 묶어주고, 수를 센 다음, 오름차순으로 정리하기
// 실행 순서: from -> group by -> select -> order by
select name, count(*) from users
group by name
order by count(*);
// 디폴트는 오름차순. 내림차순 정렬은 마지막에 desc를 붙여주기
Alias(별칭): 다른 테이블에 같은 필드명이 있거나, 다른 필드명을 지어주고 싶을 때
// 테이블명 바로 뒤에 앞 글자를 따서 별칭 붙이기
// 또는 as 뒤에 별칭 붙이기
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method