Programmers-SQLpractice_230117

ouneno·2023년 1월 17일
0

Programmers-SQL

목록 보기
1/26
post-thumbnail

2023-01-17 화요일

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

1. CAR_TYPE이 'SUV'인 차량들 전체 출력

SELECT
*
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'

2. CAR_TYPE 이 'SUV'인 차량들의 DAILY_FEE 전체 합계

SELECT SUM(DATILY_FEE)
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'

3. CAR_TYPE이 'SUV'인 차량들의 수량 조회 = COUNT(*)

SELECT count(*)
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';

4. 제출

SELECT ROUND( SUM(DAILY_FEE) / count(*) ) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR 
WHERE CAR_TYPE = 'SUV';

문제 해석

  • SELECT : 자동차들의 '평균' '일일 대여 요금''소수 첫번째 자리에서 반올림' 하여 'AVERAGE_FEE' 컬럼명으로 출력할 것
  • WHERE : 'SUV'

집계함수에 대하여

1. COUNT : SELECT count(컬럼명) FROM 테이블명;

SELECT count(car_id) 
FROM CAR_RENTAL_COMPANY_CAR 
WHERE CAR_TYPE = 'SUV'

2. SUM : SELECT (컬럼명) FROM 테이블명;

SELECT ( SUM(DAILY_FEE) / COUNT(car_id) )  
FROM CAR_RENTAL_COMPANY_CAR 
WHERE CAR_TYPE = 'SUV'

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

1. FOOD_FACTORY 테이블 전체 출력

SELECT * FROM FOOD_FACTORY

2. FOOD_FACTORY : 공장ID, 공장이름, 주소 출력

SELECT  FACTORY_ID
        , FACTORY_NAME
        , ADDRESS
FROM FOOD_FACTORY

3. WHERE : 주소지 이름에 '강원도' 포함

SELECT  FACTORY_ID
        , FACTORY_NAME
        , ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '%강원도%'

4. FACTORY_ID 오름차순으로 출력

SELECT  FACTORY_ID
        , FACTORY_NAME
        , ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '%강원도%'
ORDER BY FACTORY_ID ASC

문제 해석

  • SELECT : '공장ID', '공장이름', '주소' 를 '오름차순'으로 출력 할 것
  • WHERE : 주소지 이름에 '강원도' 가 포함 된 기준
  • ORDER BY : '오름차순'

LIKE 함수

1. LIKE : SELECT (컬럼명) FROM 테이블명 WHERE 컬럼명 LIKE '%';

WHERE ADDRESS LIKE '%강원도%'
(1) 강원도로 시작하는 : '강원도%';
(2) 강원도로 끝나는 : '%강원도';
(3) 강원도가 들어가는 : '%강원도%';

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

1. PATIENT 테이블 전체 출력

SELECT * FROM PATIENT;

2. FOOD_FACTORY : 환자이름, 환자번호, 성별코드, 나이, 전화번호 출력

SELECT PT_NAME
        , PT_NO
        , GEND_CD
        , AGE
        , TLNO
FROM PATIENT

3. WHERE : 12세 이하, 여성 출력

SELECT PT_NAME
        , PT_NO
        , GEND_CD
        , AGE
        , TLNO
FROM PATIENT
WHERE GEND_CD='W' AND AGE <= 12

4. 전화번호 없을 경우 'NONE'으로 출력

SELECT PT_NAME
        , PT_NO
        , GEND_CD
        , AGE
        , IFNull(TLNO,'NONE')
FROM PATIENT
WHERE GEND_CD='W' AND AGE <= 12

5. 나이 기준 내림차순, 나이 같을시 환자이름 오름차순

SELECT PT_NAME
        , PT_NO
        , GEND_CD
        , AGE
        , IFNull(TLNO,'NONE')
FROM PATIENT
WHERE GEND_CD='W' AND AGE <= 12
ORDER BY AGE DESC, PT_NAME ASC;

문제 해석

  • SELECT : '환자이름, '환자번호', '성별코드', '나이', '전화번호**' 를 출력 할 것
  • WHERE : 성별은 'W', 나이는 '12세이하'
  • ORDER BY : 나이를 기준으로 '내림차순', 나이가 같다면 이름을 기준으로 '오름차순'

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글