헤비 유저가 소유한 장소(Lv. 3) SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(ID) >= 2 ) 우유와 요거트가 담긴 장바구니(Lv. 4) WITH -- 1. 우유나 요거트를 구매한 장바구니 아이디 조회 WITH TMP AS ( SELECT CART_ID FROM CART_PRODUCTS WHERE NAME IN ('Milk', 'Yogurt') GROUP BY CART_ID, NAME ) -- 2. 우유와 요거트를 동시에 구입한 장바구니 아이디 조회 SELECT CART_ID FROM TMP GROUP BY CAR..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 자동차 대여 기록에서 장기/단기 대여 구분하기(Lv. 1) 장기대여, 단기대여를 나타낼 때 조건문은 2가지 방식이 있다. IF SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS START_DATE, IF(DATEDIFF(END_DATE, START_DATE) + 1 >= 30, '장기 대여', '단기 대여') AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE LIKE..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 조건에 맞는 도서와 저자 리스트 출력하기(Lv. 2) SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK AS B JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_ID WHERE B.CATEGORY = '경제' ORDER BY B.PUBLISHED_DATE; INNER JOIN, LEFT JOIN, RIGHT JOIN 무엇을 사용하든 결과에는 영향을 미치지 않는다(별다른 조건이 없기 때문에) 5월 식품들의 총매출 조회하기(Lv. 4) SELECT A.PRODUCT_ID, A.PRODUCT_..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 경기도에 위치한 식품창고 목록 출력하기(Lv. 1) SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '경기도%' ORDER BY WAREHOUSE_ID; 이름이 없는 동물의 아이디(Lv. 1) SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID; 이름이 있는 동물의 아이디(Lv. 1) SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT N..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 카테고리 별 도서 판매량 집계하기(Lv. 3) SELECT A.CATEGORY, SUM(B.SALES) AS TOTAL_SALES FROM BOOK AS A JOIN BOOK_SALES AS B ON A.BOOK_ID = B.BOOK_ID WHERE B.SALES_DATE LIKE '2022-01%' GROUP BY A.CATEGORY ORDER BY A.CATEGORY; 카테고리 별 → GROUP BY 총 판매량 → SUM() 식품분류별 가장 비싼 식품의 정보 조회하기(Lv. 4) 3 방법 모두 기본 아이디어는 동일하고 “식품분류별로 가격이 제일 비싼 식품의 분류, 가격”을 조회하는데 서브쿼리를 쓰는지, WITH절을 쓰는지 차이만 있다. 서브쿼리..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 가장 비싼 상품 구하기(Lv. 1) SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; 가격이 제일 비싼 식품의 정보 출력하기(Lv. 2) SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1; 최댓값 구하기(Lv. 1) MAX SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS; ORDER BY + LIMIT SELECT DATETIME AS 시간 FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1; 최솟값 구하기(Lv. 2)..
프로그래머스 스쿨 - 온라인 IT 특화 교육 전문 플랫폼 평균 일일 대여 요금 구하기(Lv. 1) SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV'; 자동차 종류가 'SUV’ → WHERE 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림 → AVG(), ROUND() 과일로 만든 아이스크림 고르기(Lv. 1) SELECT A.FLAVOR FROM FIRST_HALF AS A JOIN ICECREAM_INFO AS B ON A.FLAVOR = B.FLAVOR WHERE A.TOTAL_ORDER > 3000 AND B.INGREDIENT_TYPE = 'fruit_based' ORDER..
1. 문제 상황 및 원인 - 출금 계좌 등록 요청을 보냈을 때, memberExtra 객체가 아직 영속성 컨텍스트에 등록되지 않은 상태에서 memberExtra를 member 엔티티의 memberExtra 필드에 저장하려고 할 때 에러가 발생했다. org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.example.mutbooks.app.member.entity.Member.memberExtra -> com.example.mutbooks.app.member.entity.MemberExtra at o..