본문 바로가기

SQL

(25)
SQL 총연습 (2) 대여 기록이 존재하는 자동차 리스트 구하기SELECT distinct r.CAR_IDfrom CAR_RENTAL_COMPANY_CAR rinner join CAR_RENTAL_COMPANY_RENTAL_HISTORY h on r.CAR_ID = h.CAR_IDwhere r.CAR_TYPE = '세단' and month(h.START_DATE) = 10order by 1 desc 식품분류별 가장 비싼 식품의 정보 조회하기서브쿼리에 별칭을 무조건 지어줘야 함! -> Every derived table must have its own aliasselect a.CATEGORY, a.PRICE MAX_PRICE, a.PRODUCT_NAMEfrom(SELECT CATEGO..
SQL 총연습 (1) 입양 시각 구하기(1)SELECT hour(DATETIME) as HOUR, count(*) COUNTfrom ANIMAL_OUTSwhere 9  진료과별 총 예약 횟수 출력하기SELECT MCDP_CD '진료과코드', count(*) '5월예약건수'from APPOINTMENTwhere APNT_YMD like('2022-05%')group by MCDP_CDorder by count(*), MCDP_CD 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기SELECT CAR_TYPE, count(*) CARSfrom CAR_RENTAL_COMPANY_CARwhere OPTIONS like ('%통풍시트%') or OPTIONS like('%열선시트%') or OPTION..
SELECT 연습(4) 대장균의 크기에 따라 분류하기 2PERCENT_RANK()백분율 순위를 계산, 현재 행 값에 대해 0~1 사이의 상대값을 리턴select a.ID, case WHEN a.percent   특정 세대의 대장균 찾기 (4LV 💁😂)자식테이블이랑 부모테이블 조인을 할 때 inner조인을 해서 풀었어야 했음1세대는 무조건 부모가 null이기 때문에 이 조건을 추가해서 했어야 했음 첫번째 풀이 select c.aId as IDfrom (select a.ID aId, a.PARENT_ID aPid, b.ID bId, b.PARENT_ID bPidfrom ECOLI_DATA aleft join ECOLI_DATA b on a.PARENT_ID = b.ID)c l..
SELECT 연습(3) 조건에 맞는 개발자 찾기예를 들어 어떤 개발자의 SKILL_CODE가 400 (=b'110010000')이라면, 이는 SKILLCODES 테이블에서 CODE가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') 에 해당하는 스킬을 가졌다는 것을 의미합니다.-> 이 부분에서 알아야 할 것은 비트 연산자 사용이다! AND 연산자(&)는 두 수의 각 비트를 비교하여, 두 비트 모두 1일 경우 결과가 1개발자의 SKILL_CODE가 400 (b'110010000')이고, Python의 CODE가 256 (b'100000000')이라면: 400 & 256 = 256 (b'100000000')결과가 0이 아니기 때문에, 해당 개발자는 Python 스킬을 가지고 있는 ..
SELECT 연습(2) UNION ALL이란?UNION ALL은 두 개 이상의 SELECT 결과를 합치면서(행끼리 합침) 중복된 데이터도 포함중복 데이터를 제거하지 않기 때문에 UNION보다 성능이 더 빠름명시적 NULL 표기 데이터 표현을 일관되게 유지하기 위해의도적으로 데이터가 없음을 표현 오프라인/온라인 판매 데이터 통합하기 (LV 4 💁😲)처음에 결합은 당연히 join을 사용하는 것이라고 생각해서 풀었다가 생각해보니, join은 컬럼끼리 결합하는 것이지, 로우끼리 결합하는 것이 아니라는 생각이 들었다.. 그래서 한번 풀어보고 당연히 오답이 나와서 찾아본 결과 로우끼리의 결합은 uinon을 사용하여 한다는 것을 알게 되었다. 또 컬럼에 null을 아예 박아서 표기할 수 있다는 사실도 알게 되었다.... 역시 문제를 풀..
SELECT 연습(1) 평균 일일 대여 요금 구하기  평균 일일 대여 요금 구하기평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림 -> ROUND(123.567, 0) //소수점 1번째 자리를 반올림 해서 0번째까지 만든다SELECT round(avg(DAILY_FEE), 0) as AVERAGE_FEEfrom CAR_RENTAL_COMPANY_CARwhere CAR_TYPE = 'SUV'  재구매가 일어난 상품과 회원 리스트 구하기select USER_ID, PRODUCT_IDfrom (SELECT user_id, product_id, count(*) cfrom ONLINE_SALEgroup by 1, 2) awhere a.c > 1order by USER_ID asc, PRODUCT_ID desc 3월에 태어난 여성 회..
SQL 실전! 실제 DB에서 연습해요(5) - Lv5. 예산이 가장 큰 프로젝트는? EmployeesEmployeeIDNameDepartmentSalary1AliceHR50002BobIT70003CharlieIT60004DavidHR45005EveSales55006FrankIT7200 EmployeeProjectsEmployeeIDProjectID1101210131024103510461026103 Projects ProjectIDProjectNameBudget101Alpha10000102Beta15000103Gamma12000104Delta8000 1. 각 직원이 속한 부서에서 가장 높은 월급을 받는 직원들만 포함된 결과를 조회하는 SQL 쿼리를 작성해주세요.select Name, Department, Salaryfrom (SELECT Department, Name, Salary, r..
SQL 실전! 실제 DB에서 연습해요(4) - Lv5. 가장 많이 팔린 품목은? 1. 각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 SQL 쿼리를 작성해주세요.SELECT c.CustomerName, sum(total) TotalAmount, count(OrderId) OrderCountfrom Customers cleft join (select o.OrderId, o.CustomerID ,p.ProductName, o.Quantity * p.Price totalfrom Orders oleft join Products p on o.ProductID = p.ProductID) aon c.CustomerID = a.CustomerIDgroup by 1 orders와 products테이블을 조인하여 주문에 따른 금액을 먼저 계산한 후,..