Banner

My Tech Blog (코딩테스트/SQL테스트)

오늘의 명언
" 성공이란 자신이 진정으로 좋아하는 일을 하면서 누리는 행복이다. "
- 오프라 윈프리 (미국 방송인, 자선가)
📑 1. 문제설명 🚀 2. 실패한 시도❌ 첫번째 시도(실패)-- 코드를 입력하세요SELECT j.car_id, j.car_type, j.daily_fee * ((100 - j.discount_rate)*0.01) * 30 AS feeFROM (car_rental_company_car c INNER JOIN car_rental_company_discount_plan d ON c.car_type = d.car_type) AS j INNER JOIN car_rental_company_rental_history h ON j.car_id = h.car_idWHERE car_type = '세단' OR 'SUV' AND h.end_date 서브쿼리에서 SELECT절 안씀 -> 그래서 SELECT *써서 ..
📑 1. 문제설명❌ 2. 실패한 시도없음 ⭐ 3. 정답코드-- 코드를 입력하세요SELECT i.name, i.datetimeFROM animal_ins i LEFT OUTER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.animal_id is nullORDER BY i.datetime ascLIMIT 3;animal_ins 테이블에는 있는데 animal_outs에는 없는 동물을 찾으면 된다.그렇다면 기준테이블은 animal_ins이고, 이 테이블을 왼쪽에 놓고 LEFT OUTER JOIN을 수행한다.JOIN된 테이블에서 o.animal_id가 null인 데이터를 조회하면 animal_ins에는 있고 animal_outs에는 없는 동물들 목록이 나온다..
📑 1. 문제설명❌ 2. 실패한 시도쉬워서 바로 성공 ⭐ 3. 정답코드-- 코드를 입력하세요SELECT i.animal_id, i.nameFROM animal_ins i INNER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.datetime SQL에서 날짜(date)는 시간적으로 오래될수록 작은 값이라는 것만 알고 있으면 쉽게 푼다.DATE_FORMAT 안해도 되고 INNER JOIN이라 쉬운 문제인데 이게 왜 lv3 이지?lv2 정도 될 거 같은데...
📑 1. 문제설명❌ 2. 실패한 시도SELECT o.animal_id, o.nameFROM animal_ins i RIGHT OUTER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.animal_id is not null AND i.animal_id is null;ORDER BY o.animal_id; 오답정리✅ `o.animal_id IS NOT NULL` ← 불필요한 조건animal_outs o는 RIGHT OUTER JOIN에서 기준 테이블이므로 절대 NULL이 될 수 없다.따라서 이 조건은 쓸 필요가 없다.✅ RIGHT OUTER JOIN 사용 ← 동일 결과지만 덜 직관적일반적으로 OUTER JOIN 할 때는 기준 테이블을 왼쪽에 놓는다.LEF..
📑 1. 문제설명❌ 2. 실패한 시도-- 코드를 입력하세요SELECT p.PRODUCT_CODE, SUM(p.price * o.sales_amount) AS SALESFROM offline_sale o INNER JOIN product p ON o.product_id = p.product_idGROUP BY p.product_codeORDER BY sales, p.product_code ASC; 결과는 잘 출력되는데 답안 제출하면 틀렸다고 함. 처음에는 ORDER BY 절에 DESC 생략해서 그런 줄 알았는데 아님...그리고 컬럼명 대소문자 때문인가 싶어서 select절의 product_code를 PRODUCT_CODE로 고쳤는데도 틀렸습니다. ⭐ 3. 정답코드와... 오랜만에 SQL 했더니 내림차순이..
📑 1. 문제설명😉 2. 문제 요약문제에서 주어진 조건PATIENTDOCTORAPPOINTMENT환자 정보의사 정보진료 예약 목록PT_NO, PT_NAME, GEND_CD, AGE, TLNODR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNOAPNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD환자번호, 환자이름, 성별코드, 나이, 전화번호의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜 문제쪼개기✅ 2022년 4월 13일 AP.APNT_YMD LIKE '2022-04-13%'✅ 취소되지 않은..
📑 1. 문제설명✏️ 2. 문제 요약문제에서 주어진 조건CAR_RENTAL_COMPANY_CAR CAR_RENTAL_COMPANY_RENTAL_HISTORY CAR_RENTAL_COMPANY_DISCOUNT_PLAN대여 중인 자동차들의 정보자동차 대여 기록 정보자동차 종류 별 대여 기간 종류 별 할인 정책 정보CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONSHISTORY_ID, CAR_ID, START_DATE, END_DATEPLAN_ID, CAR_TYPE, DURATION_TYPE, DISCOUNT_RATE- 자동차 ID,- 자동차 종류,- 일일 대여 요금(원),- 자동차 옵션 리스트,- 자동차 대여 기록 ID,- 자동차 ID- 대여 시작일, - 대여 종료일- 요금 할인 정책 ID,..
📑 1. 문제설명⭐ 2. 정답코드내가 푼 코드 ORDER BY DATEDIFF (입소일, 퇴소일)SELECT I.ANIMAL_ID, I.NAMEFROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.Animal_id = O.Animal_idORDER BY DATEDIFF(I.DATETIME, O.DATETIME)LIMIT 2이렇게 해서 정답처리가 됬는데 다른 사람들이 쓴 코드를 보다가 뭔가 이상한 점 발견!보호소 퇴소일 - 입소일 을 해서 그 값이 큰 순서대로 2건을 반환하는 건데나는 입소일 - 퇴소일로 반대로 적었다 대신 오름차순으로 하니까 작동한다.🐦 3. 다른 사람들이 푼 코드ORDER BY DATEDIFF (퇴소일, 입소일) DESCSELECT I.ANIMAL_ID, I.N..
상단으로