본문 바로가기

Algorithm/Programmers

(31)
[프로그래머스] Oracle - (SQL 고득점 Kit) String,Date 문제 풀이 취소되지 않은 진료 예약 조회하기 SELECT a.APNT_NO, c.PT_NAME, c.PT_NO, a.MCDP_CD, b.DR_NAME, a.APNT_YMD FROM APPOINTMENT a JOIN DOCTOR b ON a.MDDR_ID = b.DR_ID JOIN PATIENT c ON a.PT_NO = c.PT_NO WHERE TO_CHAR(APNT_YMD, 'YYYY-MM-DD') = '2022-04-13' AND APNT_CNCL_YN = 'N' ORDER BY 6 조건별로 분류하여 주문상태 출력하기 SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE, 'YYYY-MM-DD') AS OUT_DATE, CASE WHEN TO_CHAR(OUT_DATE, 'MM-DD'..
[프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 상품을 구매한 회원 비율 구하기 문제 USER_INFO 테이블과 ONLINE_SALE 테이블에서 1) 2021년에 가입한 전체 회원들 중 3) 상품을 구매한 회원수와 5) 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 4) 2021년에 가입한 전체 회원 수)을 2) 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요. 문제 풀이 인라인 뷰 2개를 이용한 풀이 두 테이블을 JOIN 후, 가입한 날짜를 확인하기 위하여 WHERE 조건을 건다. (T1) 년, 월 별로 조회하기 위하여 GROUP BY로 묶는다. (T1) 상품을 구매한 회원수를 구하기 위하..
[프로그래머스] Oracle - (SQL 고득점 Kit) JOIN 상품 별 오프라인 매출 구하기 문제 PRODUCT 테이블과 OFFLINE_SALE 테이블에서 1) 상품코드 별 2) 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요. 문제 풀이 두 테이블을 JOIN 후, 상품코드 별로 조회하기 위하여 GROUP BY로 묶는다. 매출액을 sum 함수로 구한다. 전체 코드 SELECT a.PRODUCT_CODE, sum(SALES_AMOUNT * PRICE) AS SALES FROM PRODUCT a JOIN OFFLINE_SALE b ON a.PRODUCT_ID = b.PRODUCT_ID GROUP BY a.PRODUCT_CODE ORDER BY 2 DESC, 1
[프로그래머스] 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 ..