코딩테스트/SQL12 [SQL Lv3] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/298519 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석평균 길이가 33CM 이상인 물고기들을 종류별로 분류해서 잡은 수, 최대 길이, 물고기의 종류를 출력한다.10CM 이하인 물고기들은 10CM로 취급하여 계산한다. 먼저 물고기 길이가 NULL인 칼럼을 10으로 만들어주기위해 서브쿼리를 활용했다.인라인 뷰에서 IFNULL절로 LENGTH가 NULL인 칼럼을 10으로 만들었고,해당 테이블에서 데이터를 조회한 뒤 HAVING절로 평균 길이가 33CM 이상인 칼럼만 추출했다.그리고 FISH_.. 2024. 12. 2. [SQL Lv3] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/157340 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석2022년 10월 16일에 대여 중인 자동차인 경우에는 대여중으로 표시하고 아니면 대여 가능이라고 표시한다. 문제 풀이CAR_ID가 여러개여서 대여중인 CAR_ID가 있더라도 다른 날짜와 겹치면 대여 가능으로 출력되었다.그래서 먼저 대여중인 테이블을 먼저 뽑아야겠다고 생각했고 해당 테이블과 LEFT JOIN을 하면 대여 가능한 CAR_ID도 같이 뽑을 수 있으니 해당 방식으로 풀어봤다. SELECT T.CAR_ID, C.. 2024. 12. 2. [SQL Lv3] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석1. 2022년 8월부터 2022년 10월까지의 차량 대여 회수 구하기2. 총 대여회수가 5회인 CAR_ID만 추출하기 문제 풀이1. 2022년 8월부터 2022년 10월까지의 총 대여회수가 5회인 CAR_ID를 인라인 뷰에서 테이블로 추출2. 해당 인라인뷰를 CAR_ID 와 INNER JOIN하여 연결3. 그룹바이로 MONTH와 CAR_ID를 묶어서 월별, CAR_ID별로 집계 SELECT MONTH(A.START_DATE) AS .. 2024. 11. 26. [SQL Lv4] 입양 시각 구하기(2) 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이1. 0부터 23시까지 hour을 출력해야는데 hour의 범위가 0부터 23까지가 아니였다.2. 어떻게 만들어야할까 고민하다가 우선 무작정 0부터 23까지의 임시 테이블을 만들었다.3. 그리고 이걸 LEFT OUTER JOIN을 통해서 hour가 일치하는 테이블의 count를 뽑아냈고 null은 COLESCE로 처리하였다. WITH T1 AS ( SELECT 0 AS HOUR UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION .. 2024. 11. 26. [SQL Lv2] 입양 시각 구하기(1) 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석1. 입양 시간이 9시부터 19시까지를 그룹화 하여 각 시간별로 입양된 동물 수를 카운트한다. 문제 해결1. HOUR 함수를 써서 DATETIME의 "시"를 뽑아낸 후 이 값을 GROUP화 한다.2. HAVING절에서 BETWEEN 연산자로 9부터 19까지의 범위를 지정하여 COUNT를 집계한다. SELECT HOUR(DATETIME) AS HOUR , COUNT(ANIMAL_ID) AS 'COUNT'FROM ANIMAL_OUTS GROUP BY HOUR(DATETIME)HAVING HOUR BETWEEN 9 AND 19ORDER BY HOUR 2024. 11. 26. 이전 1 2 3 다음