본문 바로가기

알고리즘 공부 및 문제 풀이/프로그래머스(PRO)

(81)
[pro] 프로그래머스 SQL level2 카테고리 별 상품 개수 구하기 - String [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131529 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SUBSTRING_INDEX(field 명, delimeter, delimeter index) 함수를 이용해서 문자열을 split 할 수 있다. 예문 결과 SUBSTRING_INDEX('10-100-1000', '-', 1) 10 SUBSTRING_INDEX('10-100-1000', '-', 2) 10-100 SUBSTRING_INDEX('10-100-1000', '-', 3..
[pro] 프로그래머스 SQL level3 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1. 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서. 서브 쿼리를 이용해 해당 조건에 맞는 자동차 ID만 추출 2. 특정 월의 총 대여횟수가 0인 경우는 제외. HAVING 절 이용. [코드] SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDS ..
[pro] 프로그래머스 SQL level3 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/157340 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] IF 조건문을 이용한다. IF(조건문, 참일 때의 값, 거짓일 때의 값) 그 외의 조건문 - IFNULL(column_name, value) - ISNULL(column_name, value) - CASE WHEN value1 THEN result1 WHEN value2 THEN result2 … [ELSE else_result] END [코드] SELECT CAR_ID, IF..
[pro] 프로그래머스 SQL level3 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] GROUP BY와 서브쿼리를 이용한다. 이때 그냥 HAVING MAX(FAVORITES) 을 하게 되면 이미 GROUP BY를 한 결과값(아무 조건이 없을 때 가장 상단에 위치한 것이 선택됨) 중에서 HAVING 을 적용하는 것이기 때문에 정답이 안된다!! [코드] SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO ..
[pro] 프로그래머스 SQL level2 가격대 별 상품 개수 구하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131530 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] TRUNCATE(숫자, 버릴 자릿 수) 함수를 이용해서 GROUP BY 해준다. TRUNCATE(1234.5678, 1) -> 1234.5 TRUNCATE(1234.5678, 2) -> 1234.56 TRUNCATE(1234.5678, -1) -> 1230 TRUNCATE(1234.5678, -2) -> 1200 [코드] SELECT TRUNCATE(PRICE, -4) AS P..
[pro] 프로그래머스 SQL level2 가격이 제일 비싼 식품의 정보 출력하기 - MAX [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131115 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT 문에서 SELECT PRODUCT_ID, PRODUCT_NAME, .., MAX(PRICE) 이런 식으로 하면 PRICE 에 대해서만 그룹함수로 지정되었기에 나머지 컬럼에 대해서도 GROUP BY를 해야 한다. 서브 쿼리를 이용하거나 내림차순 정렬 후 1개만 출력하도록 하는 방법이 있다. [코드] SELECT * FROM FOOD_PRODUCT WHERE PRICE..
[pro] 프로그래머스 SQL level2 재구매가 일어난 상품과 회원 리스트 구하기 - SELECT [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 같은 유저가 같은 상품을 중복해서 구매한 경우를 구해야 한다. 따라서 USER_ID와 PRODUCT_ID로 GROUP BY 한 후 그 COUNT 가 2 이상인 경우를 출력한다. [코드] SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*)>=2 ORDER BY USER_ID..
[pro] 프로그래머스 SQL level2 3월에 태어난 여성 회원 목록 출력하기 - SELECT [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SQL 문 다 까먹었다하하하하하 1. 날짜와 관련된 데이터 추출 SELECT * FROM (데이터베이스/테이블) WHERE YEAR(컬럼명) = "2021" 월은 MONTH(컬럼명), 일은 DAYOFMONTH(컬럼명)으로 변경하면 된다. 추가적으 DATEDIFF(A, B)는 A 날짜에서 B 날짜를 뺀 값, CURDATE()는 오늘 날짜를 가리킨다. 2. 날짜 데이터 포맷 변경 ..