[평균 일일 대여 요금 구하기]
CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요.
-- 반올림: ROUND()
SELECT ROUND(AVG(DAILY_FEE), 0) AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
[조건에 맞는 사용자와 총 거래금액 구하기]
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요.
-- HAVING, WHERE 구분하기!
SELECT u.USER_ID,
u.NICKNAME,
SUM(b.PRICE) TOTAL_SALES
FROM USED_GOODS_BOARD b
JOIN USED_GOODS_USER u ON b.WRITER_ID = u.USER_ID
WHERE b.STATUS = 'DONE'
GROUP BY u.USER_ID
HAVING SUM(B.PRICE) >= 700000
ORDER BY TOTAL_SALES;
[가격대 별 상품 개수 구하기]
PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.
-- FLOOR: 내림
-- PRICE를 10,000으로 나누고 소수점 아래를 내림 처리한 후 다시 10,000을 곱하여 가격대 구하기
SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP,
COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY FLOOR(PRICE / 10000)
ORDER BY PRICE_GROUP;
[3월에 태어난 여성 회원 목록 출력하기]
MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.
-- MONTH
SELECT MEMBER_ID,
MEMBER_NAME,
GENDER,
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE GENDER = 'W'
AND MONTH(DATE_OF_BIRTH) = 3
AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;
[즐겨찾기가 가장 많은 식당 정보 출력하기]
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
-- 내가 짠 쿼리
-- HAVING을 사용할 때 조건을 명시해야함 ex.HAVING MAX(FAVORITES) > 0
SELECT FOOD_TYPE,
REST_ID,
REST_NAME,
MAX(FAVORITES) FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
HAVING MAX(FAVORITES)
ORDER BY FOOD_TYPE DESC;
-- 정답
-- WHERE절에서 사용하는 서브쿼리(비교 연산자)
SELECT R.FOOD_TYPE,
R.REST_ID,
R.REST_NAME,
R.FAVORITES
FROM REST_INFO R
WHERE R.FAVORITES = (
SELECT MAX(F.FAVORITES)
FROM REST_INFO F
WHERE F.FOOD_TYPE = R.FOOD_TYPE
)
ORDER BY R.FOOD_TYPE DESC;
[식품분류별 가장 비싼 식품의 정보 조회하기]
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
-- WHERE절에서 사용하는 서브쿼리 비교 연산자ver.
SELECT F.CATEGORY,
F.PRICE MAX_PRICE,
F.PRODUCT_NAME
FROM FOOD_PRODUCT F
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
AND F.PRICE = ( -- 카테고리별 최댓값 구하기
SELECT MAX(P.PRICE)
FROM FOOD_PRODUCT P
WHERE F.CATEGORY = P.CATEGORY
GROUP BY CATEGORY
)
ORDER BY MAX_PRICE DESC;
[5월 식품들의 총매출 조회하기]
FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.
-- 문제 잘 읽기 *총매출*
SELECT P.PRODUCT_ID,
P.PRODUCT_NAME,
SUM(O.AMOUNT * P.PRICE) TOTAL_SALES
FROM FOOD_PRODUCT P
JOIN FOOD_ORDER O
ON P.PRODUCT_ID = O.PRODUCT_ID
WHERE DATE_FORMAT(O.PRODUCE_DATE, '%Y-%m') = '2022-05'
GROUP BY P.PRODUCT_ID
ORDER BY TOTAL_SALES DESC,
P.PRODUCT_ID;
'SQL' 카테고리의 다른 글
SQL 과제 오답: WITH | WITH RECURSIVE | STEDDEV (0) | 2024.12.05 |
---|---|
SQL 코드카타 오답: DATE | MAX로 우선 순위가 높은 값 반환하기 | DISTINCT (2) | 2024.12.05 |
SQL 코드카타 오답: HAVING COUNT(*) > 1 | CONCAT | SABSTR (0) | 2024.12.03 |
SQL 코드카타 오답: DATE_FORMAT | 날짜 계산 | IN (0) | 2024.11.29 |
SQL 코드카타 오답: DATE_FORMAT | LEFT | HOUR (2) | 2024.11.28 |