세용용용용 2023. 11. 21. 10:36

sql쿼리 각 절의 우선 순위

from >>> where >>> select >>> order by >>> group by >>> having >>> limit(이절은 order by 이후 실행)

1. 강원도에 위치한 생산공장 목록 출력

FOOD_FACTORY 테이블 : 식품공장 정보

 

문제 : 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

 

나의 쿼리

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS # 컬럼 선택
from FOOD_FACTORY # 불러올 테이블
where ADDRESS like '강원%' # address컬럼 강원으로 시작하는 단어 필터
order by FACTORY_ID # factory_id로 오름차순 정렬

 

 

2. 흉부외과 또는 일반외과 의사 목록 출력

DOCTOR 테이블 : 종합병원에 속한 의사 정보

 

문제 : 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬

 

나의 쿼리

SELECT DR_NAME, DR_ID, MCDP_CD, date_format(HIRE_YMD,'%Y-%m-%d') as HIRE_YMD # 컬럼 선택
from DOCTOR # 불러올 데이터
where MCDP_CD='CS' or MCDP_CD='GS' # 진료과 필터
order by HIRE_YMD desc, DR_NAME # hire_ymd컬럼 내림차순, dr_name컬럼 오름차순

 

3. 이름이 없는 동물의 아이디

ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

 

문제 : 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬

 

나의 쿼리

SELECT ANIMAL_ID # 컬럼 선택
from ANIMAL_INS # 불러올 데이터
where name is null # 이름이 null인 경우 필터
order by ANIMAL_ID #animal_id 컬럼 오름차순

 

4. 조건에 맞는 회원수 구하기

USER_INFO 테이블 : 의류 쇼핑몰에 가입한 회원 정보

 

문제 : 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성

 

나의 쿼리

SELECT count(*) as users # 컬럼 선택(행수 카운트)
from USER_INFO # 불러올 데이터
where date_format(JOINED, '%Y')='2021' and age>=20 and age<=29 # 2021년,20~29살 필터

 

5. 12세 이하인 여자 환자 목록 출력

PATIENT 테이블 : 종합병원 등록된 환자정보

 

문제 : 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 

나의 쿼리

SELECT PT_NAME, PT_NO, GEND_CD, AGE, # 컬럼 선택
case # TNLO 컬럼이 null이면 다른값 대체
    when TLNO is null then 'NONE'
    else TLNO
end as TLNO
from PATIENT # 데이터 불러오기
where AGE<=12 and GEND_CD='W' # 나이가 12이하 성별이 w인 경우로 필터
order by AGE desc, PT_NAME # age컬럼 내림차순, pt_name컬럼 오름차순

 

 

6. 인기있는 아이스크림

FIRST_HALF 테이블 : 아이스크림 가게의 상반기 주문 정보

 

문제 : 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성

 

나의 쿼리

SELECT FLAVOR # 컬럼 선택
from FIRST_HALF # 불러올 데이터
order by TOTAL_ORDER desc, SHIPMENT_ID # total_order 컬럼 내림차순, shipment_id 컬럼 오름차순

 

7. 조건에 맞는 도서 리스트 출력

BOOK 테이블 : 각 도서의 정보를 담은 테이블

 

문제 : 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬

 

나의 쿼리

SELECT BOOK_ID, date_format(PUBLISHED_DATE,'%Y-%m-%d') as PUBLISHED_DATE # 컬럼 선택
from BOOK # 불러올 데이터
where date_format(PUBLISHED_DATE, '%Y')='2021' and CATEGORY='인문' # 출판일 2021년, 카테고리 인문 인것을 필터링
order by PUBLISHED_DATE # PUBLISHED_DATE컬럼 오름차순

 

8. 평균 일일 대여 요금 구하기

CAR_RENTAL_COMPANY_CAR  테이블 : 자동차 대여회사 대여중인 자동차 정보

 

문제 : 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정

 

나의 쿼리

SELECT round(avg(DAILY_FEE)) as AVERAGE_FEE # 가격 평균으로 소수점 첫쨰자리에서 반올림
from CAR_RENTAL_COMPANY_CAR # 데이터 불러오기
where CAR_TYPE='SUV' # 자동차type이 suv인것으로 필터
group by CAR_TYPE # car_type컬럼 group by

 

9. 모든 레코드 조회하기

ANIMAL_INS  테이블 : 동물 보호소에 들어온 동물의 정보를 담은 테이블

 

문제 : 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성

 

나의 쿼리

SELECT * # 모든 컬럼 선택
from ANIMAL_INS # 불러올 데이터
order by ANIMAL_ID #animal_id컬럼 오름차순

 

10. 과일로 만든 아이스크림 고르기

FIRST_HALF 테이블 : 아이스크림 가게 상반기 주문 정보

 

ICECREAM_INFO 테이블 : 아이스크림 성분 정보

 

문제 : 상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성

 

나의 코드

select a.FLAVOR from # 컬럼 선택
(SELECT FLAVOR, TOTAL_ORDER # 총 주문량이 3000보다 큰 주문 필터 
from FIRST_HALF 
where TOTAL_ORDER>3000) a 
join
(select FLAVOR, INGREDIENT_TYPE # 아이스크림 주성분이 fruit_based인것 필터
from ICECREAM_INFO
where INGREDIENT_TYPE='fruit_based') b
on a.FLAVOR = b.FLAVOR # 두 테이블 join
order by a.TOTAL_ORDER desc # 총 주문량 내림차순 정렬