관리 메뉴

한다 공부

[MySQL] SQL 문제풀이 (6문제) 본문

CS/SQL

[MySQL] SQL 문제풀이 (6문제)

사과당근 2023. 9. 18. 22:11

SQL을 4개월 만에 다시 들여다보니 기억이 잘 안나서..
문제를 풀어 감을 익히고자 한다 🥹

프로그래머스 SQL 고득점 키트에 있는 것 중 안 풀었던 것을 풀 것임
 


1. SELECT

https://school.programmers.co.kr/learn/courses/30/lessons/133024

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

인기있는 아이스크림

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;

정렬 조건을 두 개를 주고 싶어서 컴마를 사용했다 ( , )


2. SUM, MAX, MIN

https://school.programmers.co.kr/learn/courses/30/lessons/131697

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

가장 비싼 상품 구하기

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT;

AS 를 사용해서, 속성 값에 별칭을 줬다.


3. GROUP BY

https://school.programmers.co.kr/learn/courses/30/lessons/133026

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

성분으로 구분한 아이스크림 총 주문량

SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER)
FROM FIRST_HALF F, ICECREAM_INFO I
WHERE F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC;

where 절은 select 절보다 먼저 수행되기 때문에,

where 절에서 사용한 별칭을 select 절에서 사용할 수 있다.
AS 명령어는 생략 가능하다.


4. IS NULL

https://school.programmers.co.kr/learn/courses/30/lessons/131114

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

경기도에 위치한 식품창고 목록 출력하기

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN,'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '%경기도%'

IFNULL은 SELECT 절에 사용된다!
IFNULL(a, b)는 속성 a의 값이 null이면 b로 변환하라는 뜻이다.


5. JOIN

https://school.programmers.co.kr/learn/courses/30/lessons/131533

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

상품 별 오프라인 매출 구하기

SELECT P.PRODUCT_CODE AS PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT) AS SALES
FROM PRODUCT AS P JOIN OFFLINE_SALE AS O
ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, PRODUCT_CODE;

처음에 GROUP BY를 안썼더니,

모든 상품의 총 판매 매출 = SUM(P.PRICE * O.SALES_AMOUNT) 이 출력되었다.

상품 코드 별로 보고 싶다면 상품 코드 별로 GROUP BY를 해주자


6. String, Date

https://school.programmers.co.kr/learn/courses/30/lessons/131529

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

카테고리 별 상품 개수 구하기

SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY;

오... LEFT (값, 길이) 를 입력하면 값을, 입력한 길이 만큼 왼쪽부터 잘라낸다!

비슷한 예로, RIGHT(값, 길이) 가 있고

가운데만 추출하고 싶다면 SUBSTRING(값, 위치, 길이) 를 사용해서 지정한 위치부터 입력한 길이만큼 잘라낼 수 있다.


유형별로 한 문제씩 복습함 👍👍🏻👍🏼👍🏽👍🏾👍🏿