기초 셋팅
1. mysql 설치해서 로컬 서버 만들기
2. 디비버에서 로컬 서버 연결하기
3. csv 파일 임포트 하기
4. 테이블 명, 로컬 명 변경하기
5. ER 다이어그램을 이용하여 테이블끼리 릴레이션 만들기
문제 1: "최소 주문 날짜 찾기"
주어진 테이블 **list_of_orders**에는 여러 주문들의 날짜가 저장되어 있습니다. 주문 날짜는 'dd-mm-yyyy' 형식으로 저장되어 있습니다. 이 테이블에서 가장 이른 주문 날짜를 찾아보세요.
select date_time
from(
select str_to_date(
concat(
substr(order_date,7,4),"-",substr(order_date,4,2),"-",substr(order_date,1,2)
),"%Y-%m-%d"
) "date_time"
from list_of_orders
) a
where date_time is not null
order by date_time
설명 1. concat()과 substr()을 이용하여 dd-mm-yyyy 형식에서 yyyy-mm-dd형식으로 변경
설명 2. str_to_date()을 이용하여 문자형에서 date형으로 변경
설명 3. 서브 쿼리문으로 작성하여 date_time라는 컬럼 명으로 바꾸기
설명 4. where 절을 이용하여 null 데이터 없애기
설명 5. order by 절을 이용하여 정렬
또 다른 코드
select MIN(STR_TO_DATE(order_date, '%d-%m-%Y')) as MIN_DATE
from list_of_orders
출력 결과
문제 2: "카테고리별 총 매출 계산하기"
order_details 테이블에는 다양한 주문들의 세부 정보가 저장되어 있습니다. 각 주문은 특정 'Category'에 속하며, 각 주문의 'Amount'는 그 주문의 매출 금액을 나타냅니다. 이 테이블을 사용하여 각 카테고리별 총 매출 금액을 계산하세요.
select Category, sum(amount)
from order_details od
group by Category
설명 1. sum(amount)를 통하여 총 매출 금액 구하기
설명 2. category로 그룹화하기
출력 결과
문제 3: "상위 5명의 고객별 총 구매액 찾기"
두 개의 테이블 order_details와 list_of_orders가 있습니다. order_details 테이블은 각 주문의 세부사항을 포함하고 있으며, list_of_orders 테이블은 주문에 대한 고객의 이름과 주문 ID를 포함합니다.
각 고객별로 총 구매액을 계산하여, 구매액이 가장 높은 상위 5명의 고객을 찾아보세요.
SELECT l.CustomerName, sum(d.amount)
FROM order_details d
INNER JOIN list_of_orders l ON d.order_id = l.order_id
GROUP BY 1
order by 2 desc
limit 5
설명 1. order_details와 list_of_orders를 join을 이용하여 합치기
설명 2. customername 기준으로 그룹화( group by 절 )
설명 3. 총 판매량 기준으로 내림차순 정렬( order by 절 )
설명 4. 상위 다섯 개만 출력 (limit 5)
출력 결과
'Today i learned & Week i learned > SQL 관련' 카테고리의 다른 글
내일배움캠프 데이터분석 2주차 SQL 개인과제 [3] (0) | 2024.01.02 |
---|---|
내일배움캠프 데이터분석 2주차 SQL 개인과제 [2] (0) | 2023.12.30 |
[MYSQL] INSERT INTO ~ SELECT, UPDATE, DELETE (0) | 2023.12.28 |
HAVING절 (0) | 2023.12.28 |
LIMIT, DISTINCT (0) | 2023.12.28 |