본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] 대여 기록이 존재하는 자동차 리스트 구하기/ 3월에 태어난 여성 회원 목록 출력하기

by kime2 2024. 1. 10.
출처

 

문제

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.

문제에 대한 해석

1. 테이블 조인

2. 조건:  세단, 10월 대여 시작

3. 정렬: id 내림차순

풀이(MYSQL)

select distinct(car.car_id)
from CAR_RENTAL_COMPANY_CAR car, CAR_RENTAL_COMPANY_RENTAL_HISTORY his
where car.car_id = his.car_id
and month(his.start_date)= 10
and car.car_type = '세단'
order by 1 desc

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

 

  1. FROM 절: CAR_RENTAL_COMPANY_CAR 와 CAR_RENTAL_COMPANY_RENTAL_HISTORY 연결
  2. WHERE 절두 테이블에 car_id가 같은것 끼리 조인하고, start_date의 월이 10월이고 car_type이 세단인것만 필터링
  3. SELECT 절: car.car_id의 중복을 제거해 조회
  4. ORDER BY 절: car.car_id 내림차순

 


출처

 

문제

MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.

문제에 대한 해석

1. 조건: 생일 3월, 여성, 전화번호 null제외

2. 조회: Id,성별, 생년월일

3. 정렬: id 오름차순

풀이(MYSQL)

select member_id, member_name, gender, date_format(date_of_birth,'%Y-%m-%d')
from member_profile
where tlno is not null and gender = 'W' and month(date_of_birth)=3
order by member_id

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. FROM 절: member_profile테이블에서
  2. WHERE 절tlno의 데이터가 모두 있고, 성별이 W이고 date_of_birth의 월이 3인 데이터를 필터링
  3. SELECT 절: member_id, member_name, gender, '%Y-%m-%d'형식으로 된 date_of_birth
  4. ORDER BY 절member_id 오름차순