오늘은 SQL 코드카타 level 2 복습하고
남은 거의 대부분의 시간은 팀 프로젝트 발제와 팀 회의 및 데이터 분석을 하는 시간으로 보냈다. 시간이 진짜 순삭됐다.
21번 문제 - 이름이 없는 동물의 아이디
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59039
풀이 : 동물 보호소에 들어온 동물 중 이름 없는 동물의 ID를 조회하고 ID 기준 오름차순 정렬해야되기 때문에 order by를 사용했다.
22번 문제 -조건에 맞는 회원수 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131535
풀이 : user_info 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원들의 수를 구해야되기 때문에 between과 where, like를 사용했다.
23번 문제 - 중성화 여부 파악하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59409
풀이 : sex_upon_intake 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있으면 중성화된 동물이라고 한다. 확인하여 중성화가 되어있다면 'O' 아니라면 'X'라고 중성화 여부를 표시해야 된다. 컬럼은 동물 아이디, 이름, 중성화 여부를 표시하고 아이디 순으로 조회해야 되기 때문에 CASE WHEN과 INSTR, ORDER BY를 사용했다.
24번 문제 - 카테고리 별 상품 개수 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131529
풀이 : product 테이블에서 상품 별로 중복되지 않는 8자리 상품코드 별 상품 개수를 출력하고 그 결과를 상품 카테고리 코드를 기준으로 오름차순 정렬해야되기 때문에 group by, order by, substr을 사용했다.
♦️개념 복습 :
25번 문제 - 고양이와 개는 몇 마리 있을까?
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59040
풀이 : 동물 보호소에 들어온 동물 중 고양이와 개 각각 몇 마리인지 조회하되 고양이를 개보다 먼저 조회해야되기 때문에 group by, order by를 사용했다.
26번 문제 - 입양 시각 구하기(1)
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59412
풀이 : 보호소에서 오전 9시부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하되, 그 결과는 시간대순으로 정렬해야되기 때문에 case when과 order by, group by, hour를 사용했다.
♦️개념 복습 :
-hour은 시간(Time) 또는 날짜/시간(Datetime) 값에서 '시(hour)'값을 추출하는 함수다. 보통 hour(컬럼명) 형식으로 쓰는데, 괄호 안에는 DATETIME, TIMESTAMP, TIME 타입이 들어가고 각 타입별 컬럼에서 시간 값(0~23)을 정수로 반환한다. 만약에 괄호 안에 NULL값이 들어가면 NULL을 반환한다!
27번 문제 - 진료과별 총 예약 횟수 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132202
풀이 : APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회할건데, 이때 컬럼명은 '진료과 코드', '5월 예약건수'로 지정해야 되고, 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 그 다음엔 진료과 코트 기준 오름차순 정렬해야 되기 때문에 order by, like, group by를 사용했다.
28번 문제 - 12세 이하인 여자 환자 목록 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132201
풀이 : patient 테이블에서 12세 이하인 여자환자의 이름, 번호, 성별코드, 나이, 전화번호를 조회하되 전화번호가 없는 경우 'NONE'으로 출력시키고 결과를 나이 기준으로 내림차순 정렬 후 환자이름 기준 오름차순 정렬해야되기 때문에 order by, case when을 사용했다.
29번 문제 - 인기있는 아이스크림
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/133024
풀이 : 상반기(first_half)에 판매되 아이스크림의 맛을 총주문량 기준 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하하여 조회해야되기 때문에 order by를 사용했다.