728x90
서울에 위치한 식당 목록 출력하기
-- 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수(ROUND 3)
-- 서울에 위치(서울특별시 X)
-- 평균점수 기준 내림차순, 즐겨찾기수 기준 내림차순
SELECT RI.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, SCORE
FROM REST_INFO RI INNER JOIN (SELECT REST_ID, ROUND(AVG(REVIEW_SCORE),2) AS SCORE FROM REST_REVIEW GROUP BY REST_ID) RR
ON RI.REST_ID = RR.REST_ID
WHERE LEFT(ADDRESS, 2) = '서울'
ORDER BY SCORE DESC, FAVORITES DESC;
강원도에 위치한 생산공장 목록 출력하기
-- WHERE 강원도
-- 공장 ID, 공장 이름, 주소
-- 공장 ID 기준 오름차순
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE LEFT(ADDRESS, 2) = '강원'
ORDER BY FACTORY_ID
3월에 태어난 여성 회원 목록 출력하기
-- WHERE 생일 = 3, 여성 회원
-- ID, 이름, 성별, 생년월일
-- 전화번호 NULL인 경우 제외
-- 회원 ID 기준 오름차순
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d") AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = 3 AND GENDER = 'W' AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;
모든 레코드 조회하기
-- ANIMAL_ID 순으로 조회(GROUP BY)
SELECT *
FROM ANIMAL_INS
GROUP BY ANIMAL_ID;
재구매가 일어난 상품과 회원 리스트 구하기
-- 동일한 회원이 동일한 상품을 재구매한 데이터
-- 회원 ID, 상품 ID
-- 회원 ID 오름차순, 상품 ID 내림차순
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC;
오프라인/온라인 판매 데이터 통합하기
-- 3월의 판매 날짜, 상품 id, 유저 ID, 판매량
-- OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL로 표시
-- 판매일 기준 오름차순, 상품 ID 오름차순, 유저 ID 오름차순
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE LEFT(SALES_DATE, 7) = '2022-03'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE LEFT(SALES_DATE, 7) = '2022-03'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;
역순 정렬하기
-- NAME, DATETIME
-- ANIMAL_ID 역순
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
아픈 동물 찾기
-- ID, 이름
-- ID 오름차순
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;
어린 동물 찾기
-- WHERE Aged가 아닌 동물
-- SELECT ID, 이름
-- ORDER BY 아이디
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;
동물의 아이디와 이름
-- 아이디, 이름
-- 아이디순
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
여러 기준으로 정렬하기
-- 아이디, 이름, 보호 시작일
-- 이름순, 날짜 내림차순
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;
상위 n개 레코드
-- NAME
-- 가장 먼저 들어온 동물: DATETIME 정렬 후 LIMIT 1
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
조건에 맞는 회원수 구하기
-- USERS COUNT(*)
-- WHERE >= 20 <= 29 AND JOINED 2021
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED) = 2021 AND AGE >= 20 AND AGE <= 29;
728x90
'프로그래밍 > DB' 카테고리의 다른 글
[SQL][프로그래머스] GROUP BY 문제 풀이 (0) | 2022.10.17 |
---|---|
[SQL][프로그래머스] SUM, MAX, MIN 문제 풀이 (0) | 2022.10.16 |
[SQL][프로그래머스] JOIN 문제 풀이 (0) | 2022.10.14 |
[mysql] 데이터 가공(csv, json, import, export) 오류 (0) | 2022.06.15 |
mysql (0) | 2022.03.16 |