내일배움캠프/SQL

[SQL]2주차_Distinct, Group by, Order by

dydatablog 2024. 11. 13. 16:32
728x90

스파르타 SQL 강의 2주차

DISTINCT (뚜렷이 다른[구별되는], 별개의) : 중복 값을 제거

select count(1) count_of_orders,
       count(distinct customer_id) count_of_customers
from food_orders
/* count(1),count(*)은 전체의 개수를 구하라는 뜻.

 

GROUP BY : 범주별 연산하기

select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)

 

[실습1] 음식점별 주문 금액 최댓값 조회하기

select restaurant_name,
      MAX(price) max_price 
from food_orders
GROUP BY restaurant_name

 

[실습2] 결제 타입별 가장 최근 결제일 조회하기

select pay_type,
    MAX(date) recent_date
from payments
group by pay_type

 

 

ORDER BY : 정렬하기

 

기본구조

select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
/* 내림차순: order by sum(컬럼) desc
select cuisine_type,
       sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price)
/* order by sum_of_price로 써도 무관

[실습1] 음식점별 주문 금액 최댓값 조회하기 - 최댓값 기준으로 내림차순 정렬

select restaurant_name,
     MAX(price) max_price
from food_orders
group by restaurant_name 
order by MAX(price) DESC

* SELECT restaurant_name, → 컴마 생략하니 에러가 났다.

 

 

[실습2] 고객을 이름 순으로 오름차순으로 정렬하기

select *
from customers
order by name
--
두가지 조건으로 정렬할 경우
order by gender, name
여성의 오름차순 이름 -> 남성의 오름차순 이름 순으로 정렬됨

 

기본 구조는 항상 SELECT -> FROM -> WHERE -> GROUP BY -> ORDER BY

 

[과제] 음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기\

select cuisine_type,
    MAX(price) max_price,
    MIN(price) min_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min(price) DESC
728x90