목록코드카타/SQL (78)
susinlee 님의 블로그
[문제] 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. [단계별 풀이] 1. ANIMAL_INS (I)테이블과 ANIMAL_OUTS (O)테이블을 ANIMAL_ID을 기준으로 LEFT JOIN2. OUTS 테이블의 ANIMAL_ID가 NULL 행만 필터링3. INS 테이블의 이름, 보호 시작일을 선택4. INS 테이블의 보호시작일로 오름차순 정렬5. LIMIT 으로 3행 제한[정답]SELECT I.NAME, I.DATETIMEFROM ANIMAL_INS ILEFT JOIN ANIMAL_OUTS OON I.ANIMAL_ID = O.ANIMAL_IDWHERE O.A..
[문제] CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. OPTIONS에 통풍시트가 있거나 열선시트, 가죽시트가 있는 행만 필터링 (REGEXP 활용)2. 자동차 종류별로 GROUP BY3. CAR_ID를 COUNT 한 후 컬럼명을 CARS로 지정4. CAR_TYPE으로 오름차순 정렬[정답]SELECT CAR_TYPE, COUNT(CAR_ID) AS CARSFROM CAR_RENTAL_COMPANY_CAR WHERE OPT..
[문제] 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. FALVOR컬럼만 선택한다2. TOTAL_ORDER 컬럼을 내림차순 정렬하고, SHIPMENT_ID를 오름차순 정렬한다[정답]SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID
[문제] PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 AGE가 12 이하이면서 GEND_CD가 'W'인 행을 필터링한다2. 환자이름, 환자번호, 성별코드, 나이, 전화번호를 선택하는데 IFNULL 함수를 사용해서 전화번호가 NULL이면 'NONE'으로 대체한다3. 나이를 내림차순 정렬, 환자이름으로 오름차순 정렬한다[정답]SELECT PT_NAME, PT_NO, GEND_CD, AGE, ..
[문제] APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 APNT_YMD가 2022년 5월인 행을 필터링 한다2. 진료과코드를 GROUP BY 해준다3. COUNT 함수로 PT_NO의 행을 센다 (AS 5월예약건수)4. 5월예약건수, 진료과 코드를 정렬한다SELECT MCDP_CD AS 진료과코드, COUNT(PT_NO) AS 5월예약건수FROM APPOINTMENTWHERE APNT_YMD LIK..
[문제] 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. [단계별 풀이] 1. HOUR 함수로 DATETIME 컬럼에서 시간만 추출한 뒤 HOUR 별칭으로 선택한다2. 테이블에서 HOUR가 9 ~ 19 사이인 행만 필터링한다3. HOUR를 GROUP BY 해준다4. COUNT 함수로 ANIMAL_ID의 행 수를 세어준다5. HOUR 순으로 정렬한다[정답]SELECT HOUR(DATETIME) AS HOUR, # HOUR는 숫자값을 반환한다 COUNT(ANIMAL_ID) AS COUNTFROM ANIMAL_OUTSWHERE..
[문제] 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. [단계별 풀이] 1. ANIMAL_TYPE 컬럼을 살펴보면 개와 고양이 뿐이므로 해당 컬럼을 GROUP BY 해준다2. COUNT 함수를 사용해서 ANIMAL_ID컬럼의 행의 수를 센다3. ANIMAL_TYPE 순으로 정렬한다[정답]SELECT ANIMAL_TYPE, COUNT(ANIMAL_ID) AS countFROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY ANIMAL_TYPE
[문제] PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 카테고리 컬럼을 SUBSTR() 함수를 이용해서 앞의 2자리만 가져온다2. 해당 컬럼을 기준으로 그룹화를 진행한다3. COUNT() 함수로 RPODUCT_ID의 행의 수를 센다4. 카테고리 코드를 기준으로 정렬한다[정답]SELECT SUBSTR(PRODUCT_CODE, 1, 2) AS CATEGORY, COUNT(PRODUCT_ID) AS PRODUCTSFROM PRODUCT GROUP BY CATEGORY # MYSQL에서는 GROUP BY에서 별칭 사용이 가능하다ORDER..