전체 글 (168) 썸네일형 리스트형 [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 보호소에서 중성화한 동물 문제 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 1) 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 2) 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요. 문제 풀이 두 테이블을 JOIN 후, ANIMAL_INS 테이블의 중성화 여부와 ANIMAL_OUTS 테이블의 중성화 여부를 각각 구하기 위하여 'Intact'가 포함되어 있는지와 없는지 WHERE 조건을 건다. 위의 결과에서 중복 없이 동물 ID와 종, 이름을 조회하기 위하여 GROUP BY로 묶는다. (DISTINCT로 조회도 가능) 전체 코드 SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME FROM ANIMAL_INS a JO.. [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 오랜 기간 보호한 동물(1) 문제 1) 아직 입양을 못 간 동물 중, 2) 가장 오래 보호소에 있었던 동물 3) 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 문제 풀이 두 테이블을 LEFT OUTER JOIN 후, ANIMAL_OUTS 테이블에 입양일이 없는 데이터를 찾기 위하여 WHERE 조건을 건다. (LEFT OUTER JOIN : 왼쪽에 오는 ANMAIL_INS 테이블의 데이터는 모두 조회하고, 오른쪽에 오는 ANIMAL_OUTS 테이블에 입양일이 없는 경우에는 NULL로 JOIN 하기 위함) 가장 오래 보호소에 있었던 동물을 구하기 위하여 보호시작일 순으로 정렬한다. 동물 3마리만 조회하기 위하여 ROWNUM을 사용한다. 전체 코드 SELECT NAME,.. [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 있었는데요 없었습니다 문제 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 1) 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다. 문제 풀이 두 테이블을 JOIN 후, ANIMAL_INS 테이블의 입양일이 ANIMAL_OUTS 테이블의 보호 시작일보다 빠른 동물을 찾기 위하여 WHERE 조건을 건다. 전체 코드 SELECT a.ANIMAL_ID, a.NAME FROM ANIMAL_INS a JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.DATETIME > b.DATETIME ORDER BY a.DATETIME [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 없어진 기록 찾기 문제 천재지변으로 인해 일부 데이터가 유실되었습니다. 1) 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. 문제 풀이 두 테이블을 JOIN 후, 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블에 기록이 없는 동물을 찾기 위하여 WHERE 조건을 건다. (IS NULL로 데이터의 유무 확인) 전체 코드 SELECT b.ANIMAL_ID, b.NAME FROM ANIMAL_INS a RIGHT OUTER JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.ANIMAL_ID IS NULL ORDER BY 1 [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 5월 식품들의 총매출 조회하기 문제 1) FOOD_PRODUCT와 FOOD_ORDER 테이블에서 2) 생산일자가 2022년 5월인 식품들의 3) 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요. 문제 풀이 FOOD_PRODUCT와 FOOD_ORDER 테이블을 JOIN 한다. 해당 날짜인 식품들만 조회하기 위하여 WHERE 조건을 건다. 위의 결과에서 식품 별 매출을 구하기 위하여 식품 ID와 이름을 GROUP BY로 묶고, 총 매출을 sum 함수로 조회한다. 전체 코드 SELECT a.PRODUCT_ID, a.PRODUCT_NAME, sum(AMOUNT * PRICE) AS TOTAL_SALES FROM .. [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 주문량이 많은 아이스크림들 조회하기 문제 1) 7월 아이스크림 총 주문량과 상반기의 아이스크림 2) 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요. 문제 풀이 테이블의 컬럼 수와 데이터 형식이 모두 일치하고, SHIPMENT_ID는 동일하지 않은 상태이기 때문에 두 테이블을 합치기 위하여 UNION ALL 연산을 사용한다. 상위 3개의 맛을 조회하기 위하여 GROUP BY로 묶어준 뒤, 총 주문량을 sum 함수로 구하여 정렬한다. 전체 코드 SELECT FLAVOR FROM ( SELECT FLAVOR FROM ( SELECT * FROM FIRST_HALF UNION ALL SELECT * FROM JULY ) GROUP BY FLAVOR ORDER BY sum(TOTAL_ORDER) DESC ).. [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 2) 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 3) 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 2) 30일간의 4) 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요. 문제 풀이 이 문.. [프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 그룹별 조건에 맞는 식당 목록 출력하기 문제 MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요. 문제 풀이 처음에는 GROUP BY를 두 번 사용하는 방법밖에 떠오르지 않았다. 그렇게 정답을 제출하고 나서 다른 사람의 풀이도 보게 되었는데, RANK를 이용한 풀이 방법이 있어서 같이 정리해보았다. HAVING 조건을 이용한 풀이 리뷰를 가장 많이 작성한 회원을 찾기 위하여 회원별 GROUP BY로 묶는다. (HAVING 서브쿼리) 그 중 리뷰의 개수를 알기 위하여 count 함수로 조회한.. 이전 1 2 3 4 5 6 7 ··· 21 다음 목록 더보기