컬럼 별마다 묶어서 연산을 하고 싶을 때
하나하나 계산하는 것이 아니라 컬럼 단위로 묶어서 한번에 계산하고자 할 때 사용
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
1. SELECT
cuisine_type 와 price의 sum 을 조회
이때 sum 은 sum_of_price 로 지칭한다.
2. FROM
food_orders 테이블에서 조회
3. GROUP BY
cuisine_type 마다 그룹으로 묶어서 조회
여기서 검색 키워드는 '음식점', '주문 금액의 최댓값' 이 된다.
SELECT restaurant_name as "음식점",
MAX(price) as max_Price
FROM food_orders fo
group by restaurant_name
여기서의 검색 키워드는 '결제 타입', '최근 결제일' 이 된다.
SELECT pay_type ,
max(date) recent_date
FROM payments p
group by pay_type
추가로, GROUP BY 절에 SELECT 에 해당하는 컬럼 외 다른 컬럼을 사용해봤을 때
에러는 발생하진 않았지만 원하는 결과는 나오지 않았다.
조회한 결과를 단순 나열하지 않고, 더 보기 쉽게 혹은 원하는 순서대로 보기 위해 정렬하고자 할 때 사용
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)
기본적으로 결과를 조회하면 오름차순으로 정렬되지만
DESC : 내림차순 / ASC : 오름차순
으로 직접 지정할 수도 있다.
+ GROUP BY 절과 ORDER BY 절의 순서를 뒤집었을 때 에러가 발생했다.
= SQL 문법 구조의 문제 : 이후 설명
여기서의 키워드는 '음식점', '주문금액', '최댓값', 그리고 '내림차순' 이 될 것이다.
SELECT restaurant_name,
max(price) as max_Price
FROM food_orders fo
group by restaurant_name
order by max(price) desc
키워드는 '이름', '오름차순' 이 된다.
SELECT *
FROM customers c
order by name
여기서 name 정렬 (ORDER BY) 중 조건을 더 추가로 설정하고 싶다면
SELECT *
FROM customers c
order by gender, name
이처럼 진행할 수 있을 것이다.
결과로는 gender 에 따라 먼저 정렬되고, 같은 gender 안에서 name 순으로 다시 정렬된다.
SQL의 기본 구조는
SELECT
FROM
WHERE
GROUP BY
ORDER BY
다음과 같다.
코드를 더 간편하게 보고, 원하는 파트만 수정하기 용이하도록 구조를 미리 작성하고 코드를 짤 수 있다.
1번
1. order by sum(delivery_time) desc
2. group by cuisine_type
3. where day_of_the_week=’Weekend’
4. from food_orders
5. select cuisine_type, sum(delivery_time)
정답 : 5 - 4 - 3 - 2 - 1
2번
1. where age between 20 and 40
2. select age, count(name) count_of_name
3. order by age
4. group by age
5. from customers
정답 : 2 - 5 - 1 - 4 - 3
#6. 문자 데이터 가공 실습 (2) | 2024.10.18 |
---|---|
#5. 문자 데이터 가공 - 형태 변화 (1) | 2024.10.18 |
#4. 문제 풀이 - 주문 금액 조회 (0) | 2024.10.18 |
#2. 에러(Error)에 대응하는 자세, 문제 풀이 (0) | 2024.10.11 |
#1. SQL 의 기초부터 (1) | 2024.10.08 |