✨Today I Learned/MySQL

20240801 TIL어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해..
20240723 TIL문제데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. select cart_idfrom cart_productswhere cart_id in ( select cart_id from cart_products where name = 'Milk') and name = 'Yogurt'order by id 서브쿼리문을 이용한 문제 풀이where절에서 2개를 동시에 비교하는 것은 없기 때문에 where절에 서브쿼리문을 이용하여 동시에 비교할 수 있도록 했다!-..
62번 - 자동차 대여 기록에 장기/단기 대여 구분하기CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.처음 풀때는 when 절 안에 서브쿼리를 이용해 풀려고 했으나 결과는 나왔지만 장기대여, 단기대여 구분이 되지 않고 그냥 단기대여로만 나왔었다. 그리고 나서 30일 계산을 어떻게 하지 생각하다 도저히 모르겠어서 구글링한 결과, datediff()라는 날짜. 시간 차이 일수 계산을 해주는 함수를 발견..
20240716 TIL 58번 - 취소되지 않은 진료 예약 조회하기PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요. select a.apnt_no, p.pt_name, p.pt_no, a.mcdp_cd, d.dr_name, a.apnt_ymdfrom appointment a left join patient p on a.pt_no=p.pt_no ..
55번 - 조건에 맞는 사용자 정보 조회하기USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요. select b.user_id, b.nickname, concat(b.city, ' ', b.street_address1, ' ', b.street_address2) '전체주소', concat(substr(b.t..
20240607 TILwindow functionWindow Function의 기본 구조window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)-argument 는 생략가능-partition by  는 그룹을 나누기위한 기준-order by 는 정렬 할 컬럼 기준을 적어줌 -RANK-특정 기준으로 순위를 매겨주는 기능[실습] 음식 타입별로 주문 건수가 가장 많은 상점 3개씩 조회하기-SUM-합계를 구하는 기능[실습] 각 음식점의 주문건이 해당 음식 타입에서 차지하는 비율을 구하고, 주문건이 낮은 순으로 정렬했을 때 누적 합 구하기날짜 포맷과 조건까지 SQL로 한 번에 끝내기[실습] 날짜 데이터의 여러 포맷select date(date) ..
20240605 TIL조회한 데이터에 아무 값이 없다면 어떻게 처리하는가 1. 없는 값을 제외해주기-MYSQL 에서는 사용할 수 없는 값일때 연산에서 제외 >> 0으로 간주2. 다른 값을 대신 사용하기다른 값이 있을 때 조건문 이용하기 : if(rating>=1, rating, 대체값)null 값일 때 : coalesce(age, 대체값)조회한 데이터가 상식적이지 않은 값을 가지고 있다면-조건문으로 값의 범위를 지정하기조건문으로 가장 큰 값, 가장 작은 값의 범위를 지정해 줄 수 있음SQL로 Pivot Table 만들어보기-업무를 효율적으로 하기위해! [실습1] 음식점별 시간별 주문건수 피벗 테이블 뷰 만들기-15~20시 사이, 20시 주문건수 기준 내림차순1. 먼저 음식점별, 시간별 주문건수 집계하기2..
20240604 TIL여러 번의 연산을 한번에 하기Subquery-기본구조[실습] user segmentation 와 조건별 수수료를 subquery로 결합해보기-음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기(수수료 구간)~5000원 미만 0.05%~20000원 미만 1%~30000원 미만 2%30000원 초과 3%[실습] 복잡한 연산음식 타입별 총 주문수량과 음식점 수를 연산하고, 주문수량과 음식점수 별 수수료율을 산정하기 음식점수 5개 이상, 주문수 30개 이상 → 수수료 0.05% 음식점수 5개 이상, 주문수 30개 미만 → 수수료 0.08% 음식점수 5개 미만, 주문수 30개 이상 → 수수료 1% 음식점수 5개 미만, 주문수 30개 미만 → 수수로 2%)필..
임빵빵
'✨Today I Learned/MySQL' 카테고리의 글 목록