2024/12 154

고양이와 개는 몇 마리 있을까

[문제] 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 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..

중성화 여부 파악하기

[문제] 보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요. [단계별 풀이]1. 아이디와 이름을 선택한다2. SEX_UPON_INTAKE 컬럼이 'Neutered' 이거나 'Spayed' 인 행은 해당 컬럼의 값을 'Y' 로  아니면 'N'으로 변경하고 별칭을 중성화로 한 뒤 선택한다3. 아이디 순으로 정렬한다[정답]SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE..

조건에 맞는 회원수 구하기

[문제] USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. [단계별 풀이] 1. 테이블에서 2021년에 가입한 회원이면서 나이가 20세 이상 29세 이하인 회원을 필터링한다2. USER_ID를 COUNT() 함수로 행의 수를 세어준다[정답]SELECT COUNT(USER_ID) AS USERSFROM USER_INFOWHERE JOINED LIKE '2021%'AND AGE BETWEEN 20 AND 29

가격이 제일 비싼 식품의 정보 출력하기

[문제] FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요. [단계별 풀이] 1. 서브쿼리를 이용해서 가장 비싼 가격의 행을 필터링한다2. 식품 ID, 식품 이름, 식품 코드, 식품 가격을 선택한다3. 서브쿼리를 이용해야 동일한 최대 값을 가진 모든 행을 반환 받을 수 있다[정답]SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICEFROM FOOD_PRODUCTWHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

흉부외과 또는 일반외과 의사 목록 출력하기

[문제] DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 진료과과 CS이거나 GS인 행을 필터링한다2. 의사의 이름, 의사ID, 진료과, 고용일자를 선택한다3. 고용일자의 날짜 포맷이 다르다면 맞춰준다4. 고용일자를 기준으로 내림차순 정렬하고, 이름 기준으로 오름차순 정렬한다[정답]SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMDFROM DOCT..

DATETIME에서 DATE로 형 변환

[문제] ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다. [단계별 풀이] 1. 테이블에서 동물의 아이디, 이름, 들어온 날짜를 선택한다2. 날짜를 YYYY-MM-DD 형태로 포맷팅한다3. 아이디 순으로 조회한다[정답]SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜FROM ANIMAL_INSORDER BY ANIMAL_ID

경기도에 위치한 식품창고 목록 출력하기

[문제] FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 ADDRESS가 '경기'로 시작하는 행 필터링하기2. 창고의 ID, 이름, 주소, 냉동시설 여부를 선택하기3. IFNULL을 사용하여 냉동시설 여부가 NULL인 경우 'N'으로 출력하기4. 창고 ID 기준으로 정렬하기[정답]SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N')FROM FOOD_WAREHOUSEWHER..

[241209] TIL

오늘은 블로그에 그동안 풀었던 코드카타 문제들을 정리하는 시간을 가져보았다. 티스토리는 하루 게시글 작성이 15개로 제한되어 있는지라 15문제까지만 정리를 하였는데 아마 이번 주 내로 SQL은 정리가 마무리될 것 같다. 정리는 다음과 같이 하고 있다.문제단계별 풀이정답이 중 2번에서 코드를 어떻게 풀어갈지에 대한 흐름을 작성하는 것이 SQL 실력향상에 도움이 될 것이라고 생각하고, 복습할 겸 정리를 해볼 생각이다. SQL 정리를 끝내면 파이썬 코드카타 문제들도 정리할 생각인데 파이썬 문제들은 어떻게 정리를 해야할지 고민중이다. 문제를 어떤 식으로 풀지 제시해야할 것이고 시간복잡도도 고려해서 어떤 자료형을 쓸 것인지 어떤 함수(알고리즘)을 쓸 것인지도 설명해야할 것 같다. 아무튼 계획은 그렇고 다음 주 내..

TIL 2024.12.10