2024/12/10 15

[241210] TIL

SQL 코드카타 29번까지 블로그에 정리하였다. 빠르게 76번까지 끝내고 파이썬 코드카타 문제들도 정리해보자. 파이썬 코드카타 문제들은 어떻게 해결하면 좋을지 아이디어를 떠올리고 해당 아이디어를 의사코드나 일반 언어로 적어보자. 그 뒤에 코드를 작성하고 시간복잡도도 분석해보는 방식으로 정리를 하자. 데이터프레임 groupby와 pivot_table, crosstab 부분을 마무리했다. 내일은 날짜, 시간 타입에 대해서 배울 예정이다. 복습과 실습이 많이 진행되어야할 것 같다. 한두번 가지고는 잘 기억에 남지 않을 것 같다. 자료구조, 알고리즘을 책과 강의를 통해 병행하고 있다. 이번 과정이 끝날 때쯤 기본적인 자료구조와 알고리즘에 대해서 완전히 숙지하고 프로그래머스 lv2 까지 풀 수 있도록 꾸준히 해보자.

TIL 2024.12.10

인기있는 아이스크림

[문제] 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. FALVOR컬럼만 선택한다2. TOTAL_ORDER 컬럼을 내림차순 정렬하고, SHIPMENT_ID를 오름차순 정렬한다[정답]SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID

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

[문제] 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..

중성화 여부 파악하기

[문제] 보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 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