본문 바로가기
가격대 별 상품 개수 구하기 GROUP BY https://school.programmers.co.kr/learn/courses/30/lessons/131530 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr • 풀이 처음에는 CASE 구문으로 풀어보려고 했다가 실패..하고 풀이를 찾아보니 나눗셈을 이용해서 푸는 방법이 있었다 만원 단위로 그룹을 짓는걸 나눗셈과 FLOOR 메서드를 이용해서 만 단위로 해서 처리하고다시 * 10000을 해서 만원 단위로 깔끔하게 나오게 끊는 쿼리 SELECT PRICE, FLOOR(PRICE/10000) FROM PRODUCT위 처럼 만의자리 숫자만 남게 나와서 해당 숫자를 기준으로 그룹바이를 하면 1만원대.. 2만.. 2024. 12. 17.
입양 시각 구하기(1) - GROUP BY, DATE 자료형 변환 https://school.programmers.co.kr/learn/courses/30/lessons/59412 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr • 24시 형식으로 시간 구하기TO_CHAR(DATETIME,'HH24') • 24시 형식으로 시간 01, 02, 03.. 형태가 아닌 1, 2, 3 형태로 구하기TO_CHAR(DATETIME,'FMHH24')FM을 붙이면 Fill Mode로 동작해서 09가 아닌 9로 들어가게 된다 • TO_CHAR로 문자열로 변환한 DATE 자료형 숫자로 변환하기TO_NUMBER(TO_CHAR(DATETIME,'HH24')) HOURTO_NUMBER 메서드로.. 2024. 12. 16.
년, 월, 성별 별 상품 구매 회원 수 구하기 - group by https://school.programmers.co.kr/learn/courses/30/lessons/131532 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 구매기록이 있는 회원 아이디 월별 조회SELECT USER_ID, TO_CHAR(SALES_DATE, 'YYYY-MM') ODATE, SALES_DATE FROM ONLINE_SALE GROUP BY USER_ID, TO_CHAR(SALES_DATE, 'YYYY-MM'), SALES_DATE 2. 년, 월, 성별별로 그룹바이하면서 id 중복되지 않게 세어주기 SELECT TO_CHAR(SALES_DATE,'YYYY') YE.. 2024. 12. 16.
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - 그룹바이 https://school.programmers.co.kr/learn/courses/30/lessons/151139 • 풀이 1. 8월~10월 중 대여횟수가 5회 이상인 car_id를 구한다 select car_id from CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE TO_CHAR(START_DATE,'YYYY-MM') BETWEEN '2022-08' AND '2022-10' GROUP BY CAR_ID HAVING COUNT(car_id) >= 5 2. 안에서 구해진건 car_id 뿐이고 전체 그룹쿼리에서는 다시 한번 위처럼 8~10월 .. 2024. 12. 10.
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - 조인 https://school.programmers.co.kr/learn/courses/30/lessons/157340 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr차량 대여 일지를 보고 특정 날짜에 대여중인지 아닌지를 구분하는 쿼리 10/16/일에 대여중인 차량의 id를 구하는 쿼리SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORYWHERE '2022-10-16' BETWEEN TO_CHAR(START_DATE, 'YYYY-MM-DD') AND TO_CHAR(END_DATE, 'YYYY-MM-DD' 위의 id에 포함되면 대여중, 아니면 대여 가능으로 표기한다CA.. 2024. 12. 9.
상품을 구매한 회원 비율 구하기 - 플머 https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr • 풀이 2021년도에 가입한 유저 ID, 유저수를 USER_INFO에서 빼온다둘이 동시에 빼오지는 못해서 각각 서브쿼리로 빼오고  -- 2021 가입한 유저 ID ( SELECT USER_ID FROM USER_INFO WHERE TO_CHAR(JOINED,'YYYY') LIKE '2021%') U-- 2021 가입한 유저 수 ( SELECT COUNT(USER_ID) CNT .. 2024. 12. 4.
그룹별 조건에 맞는 식당 목록 출력하기 - 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/131124 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr • 풀이 조인된 테이블에서 가장 많이 리뷰를 작성한 사람을 찾아서 가져오는 문제 1. 리뷰 가장 많이 한 사람이 리뷰 몇번이나 했는지를 찾기SELECT MAX(COUNT(1)) FROM REST_REVIEW GROUP BY MEMBER_ID 2.  해당 횟수만큼 리뷰한 멤버아이디들을 조회하기 SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING COUNT(1) =.. 2024. 12. 3.
오프라인/온라인 판매 데이터 통합하기 https://school.programmers.co.kr/learn/courses/30/lessons/131537?language=oracle 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr !오프라인은 USER_ID가 없기에 NULL로 넣는다!ORDER BY는 UNION 할 시에도 마지막에 넣어야 한다!ORDER BY 할때 SELECT에 쓴 순서대로 지정해서 굳이 컬럼명 안쓰고도 정렬할 수 있다SELECT TO_CHAR(SALES_DATE,'YYYY-MM-DD') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNTFROM ONLINE_SALE WHERE TO_CHA.. 2024. 11. 22.
조건에 맞는 회원수 구하기(DATE 문자열 변환) https://school.programmers.co.kr/learn/courses/30/lessons/131535?language=oracle 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr TO_CHAR(DATE형 컬럼, 포맷)으로 DATE를 문자열로 변환할 수 있다 SELECT COUNT(*) FROM USER_INFO WHERE TO_CHAR(JOINED,'YYYY') = '2021' AND AGE BETWEEN 20 AND 29; 2024. 11. 19.
상위 N개 레코드(N개 출력 - ROWNUM, FROM 절 서브쿼리) https://school.programmers.co.kr/learn/courses/30/lessons/59405?language=oracle 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 들어온 날짜가 가장 오래된 동물의 이름을 고르는 문제 SELECT NAME, DATETIMEFROM ANIMAL_INSWHERE ROWNUM  ROWNUM 키워드로 1개를 뽑아냈지만 정렬이 제대로 되지 않았다 -- 정답아래처럼 FROM 절 서브쿼리로 정렬된 컬럼을 먼저 뽑아낸 다음 갯수를 제한해주는 방식으로 제대로 가장 먼저 들어온 원숭이를 찾을 수 있었다SELECT NAMEFROM (SE.. 2024. 11. 19.
프로그래머스 SQL 고득점 KIT 풀면서 알게된 SQL 문법,메서드 정리 • DATE_FORMAT 메서드 "2020-01-01" 형태로 날짜가 들어올때date_format(published_date,'%Y-%m-%d')//2020-07-01 • LIMIT , OFFSET상위 N개를 가져와야 할때 쿼리문 마지막에 LIMIT N; 을 붙여준다OFFSET을 사용하면 시작할 위치를 정할 수 있다LIMIT 3, OFFSET 3 하면 4번째 줄 부터 4,5,6번째 줄의 데이터를 가져온다SELECT F.FLAVORFROM FIRST_HALF F, JULY JWHERE F.FLAVOR = J.FLAVORGROUP BY F.FLAVORORDER BY (F.TOTAL_ORDER + SUM(J.TOTAL_ORDER)) DESCLIMIT 3; • ROUND(A,B) 함.. 2024. 6. 23.