전체 글 170

대여 기록이 존재하는 자동차 리스트 구하기

[문제] CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. 두 테이블을 CAR_ID 기준으로 JOIN2. CAR_TYPE이 '세단'이면서 대여 시작일이 10월인 행들만 필터링3. DISTINCT 를 활용하여 고유 자동차 ID만 출력4. 자동차ID 기준으로 내림차순 정[정답]SELECT DISTINCT(C.CAR_ID) AS CAR_IDFROM CAR_RENTAL_COMPANY_CAR CJOIN CA..

3월에 태어난 여성 회원 목록 출력하기

[문제] MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 생일이 3월이면서 여성이고 전화번호가 NULL이 아닌 행들만 필터링2. 회원ID, 이름, 성별, 생년월일(데이터 포맷 맞추기)을 조회3. 회원ID 기준으로 오름차순 정렬[정답]SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTHFROM MEMBER_PROFILEWHERE MONTH(DAT..

가격대 별 상품 개수 구하기

[문제] PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 가격에서 1만으로 나눠줘서 앞자리 수를 구할 수 있다.2. 소수점 부분은 TRUNCATE 함수로 제거한 뒤 다시 1만을 곱해줘서 가격대를 구한다3. 해당 구간별로 GROUP BY 한 후 PRODUCT_ID를 COUNT 한다4. 가격대를 기준으로 오름차순 정렬[정답]SELECT TRUNCATE(PRICE / 10000, 0) * 1..

[241211] TIL - 시간복잡도 정리

배열 (리스트) : 같은 타입(객체의 주소값)의 변수들로 이루어진 집합. 메모리의 연속공간에 값이 채워져 있는 형태장점: 검색 성능이 좋다 O(1)단점: 값의 삽입과 삭제에서 비효율적 O(n). 메모리 활용에 비효율적연결리스트 (deque) : 값과 주소를 묶은 노드를 주소로 연결한 자료구조 (deque는 이중 연결리스트)장점: 주소로 연결되어 있어 값을 삽입하거나 삭제하는 연산의 속도가 빠름 O(1)단점: 원소로 바로 접근이 불가능함. Head부터 차례대로 접근 O(n)리스트에서 pop(0)을 할 경우 O(n), insert(0, x)을 할 경우 O(n)deque에서 popleft()을 할 경우 O(1), appendleft(x)을 할 경우 O(1) deque의 roate(k) 는 시간복잡도 O(k)를..

TIL 2024.12.11

조건에 맞는 사용자와 총 거래금액 조회하기

[문제] USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. BOARD 테이블과 USER 테이블을 각각 WRITER_ID와 USER_ID로 JOIN2. STATUS가 DONE인 행들만 필터링 (WHERE)3. USER_ID로 GROUP BY 후 PRICE을 SUM → 총거래금액4. 총거래금액이 70만인 행들만 필터링 (HAVING) → MYSQL은 HAVING에 SELECT 절의 별칭을 사용할 수 있다5. 회원ID, 닉네임, 총거래금액 선택6.. 총거래금액으로 오름차순 정렬[정답]SELECT ..

평균 일일 대여 요금 구하기

[문제] CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요. [단계별 풀이] 1. CAR_TYPE이 SUV인 행들만 필터링2. DAILY_FEE를 AVG 한 후 AVERAGE_FEE로 지정3. ROUND로 첫 번째 자리서 반올림[정답] SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CARWHERE CAR_TYPE = 'SUV'

조건에 맞는 도서 리스트 출력하기

[문제] BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요.결과는 출판일을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. PUBLISHED_DATE가 2021년이면서 CATEGORY가 인문인 행들만 필터링2. 도서ID, 출판일(포맷 지켜야함)를 선택3. 출판일을 오름차순 정렬[정답]SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATEFROM BOOKWHERE PUBLISHED_DATE LIKE '2021%'AND CATEGORY = '인문'

루시와 엘라 찾기

[문제] 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty 인 행들을 필터링한다2. 아이디와 이름, 성별 및 중성화 여부를 선택한다[정답]SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKEFROM ANIMAL_INSWHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogen', 'Sabrina', 'Mitty')

성분으로 구분한 아이스크림 총 주문량

[문제] 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요. [단계별 풀이] 1. FIRST_HALF 테이블과  ICECREAM_INFO 테이블을 FLAVOR 기준으로 JOIN2. INGREDIENT_TYPE 을 GROUP BY3. TOTAL_ORDER를 SUM 한 후 TOTAL_ORDER 로 별칭4. TOTAL_ORDER를 오름차순 정렬[정답]SELECT I.INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALF FJOIN ICECREAM_INFO ION F.FLAVOR =..