본문 바로가기

Oracle

(7)
ALL_TAB_COLS 사용하여 쿼리 편하게 쓰기 (오라클) 오늘 쓸 건 거창한 건 아니고 일할 때 종종 쓰는 쿼리를 공유하려고 한다. 1 2 3 4 SELECT ','||COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = '테이블명' ORDER BY COLUMN_ID cs 오라클에서 ALL_TAB_COLS 는 현재 유저가 접근 가능한 테이블의 컬럼 정보를 조회할 수 있는 테이블이다. INSERT 문이나 UPDATE 문 작성할 때 이 쿼리를 실행하고 결과를 복사 붙여 넣기 하면 쿼리를 빨리 만들 수 있다. 콤마를 앞에 붙이는 이유는 뒤에 붙이면 밑에 컬럼을 추가할 때 기존 마지막 컬럼에 콤마를 빠트리는 실수할 가능성이 있다. 그리고 추가하지 않더라도 삭제하는 경우에도 CTRL+D 한 번만 해주면 되서 편하다. 1 2 3 4 SE..
[프로그래머스_SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 테이블: CAR_RENTAL_COMPANY_CAR 자동차 테이블 CAR_RENTAL_COMPANY_RENTAL_HISTORY 대여 이력 테이블 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 할인 정보 테이블 문제: 자동차 종류가 '세단','SUV' 인 자동차 중 2022-11-01~2022-11-30 까지 대여 가능하고 30일간 대여 금액이 50만원 이상 200만원 미만인 자동차 조..
[프로그래머스_SQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 또 프로그래머스 또 SQL 글을 적습니다...! 문제: 2022년도 9월 에 속하는 대여 기록중 대여 기간이 30일 이상은 장기대여 미만은 단기대여로 출력 여자는 F 남자는 M 과 같이 값이 고정인 경우는 DECODE(GENDER, '여자', 'F', '남자', 'M') 이런 식으로 작성하는 편이 간단합니다. 하지만 이번 문제처럼 30일 초과는 단기 이상은 장기와 같이 범위를 다룰 때는 CASE..
[프로그래머스] SQL 자동차 대여 기록 별 대여 금액 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CAR_RENTAL_COMPANY_CAR -- 품목 테이블 CAR_RENTAL_COMPANY_RENTAL_HISTORY -- 대여 이력 테이블 CAR_RENTAL_COMPANY_DISCOUNT_PLAN -- 대여 이력 할인율 테이블 자동차 종류가 트럭인 자동차의 대여 기록 별 대여 금액을 구하는 문제였다. 처음에는 아래와 같이 풀었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..
[프로그래머스_SQL] 상품을 구매한 회원 비율 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 간략하게 요약하자면, 2021년에 가입한 회원 중 상품을 구매한 회원수, 구매 비율을 년 월로 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SELECT SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), 1, 4) YEAR ,TO_NUMBER(SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), ..
프로그래머스 SQL 우유와 요거트가 담긴 장바구니 (오라클) 문제 우유와 요거트를 동시에 구입한 장바구니 아이디 조회 아이디 순으로 정렬 solution 1 SELECT A.CART_ID FROM CART_PRODUCTS A, CART_PRODUCTS B WHERE A.NAME='Milk' AND B.NAME='Yogurt' AND A.CART_ID=B.CART_ID ORDER BY A.ID A는 우유를 구매한 아이디, B는 요거트를 구매한 아이디 A와 B에 모두 있는 아이디 = 우유와 요거트를 모두 구매한 아이디 solution2 SELECT CART_ID FROM CART_PRODUCTS WHERE NAME='MILK' AND CART_ID IN (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME='YOGURT') ORDER BY..
프로그래머스 SQL 헤비 유저가 소유한 장소 (오라클) 문제 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부른다. 헤비 유저가 등록한 공간 정보를 아이디 순으로 조회. solution SELECT * FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(ID) > 1) ORDER BY ID HOST_ID로 묶으면 몇 개의 공간을 등록하고 있는지 ID 갯수로 확인할 수 있다. 둘 이상 등록한 사람을 HAVING 에서 조건으로 걸어주면 헤비 유저의 호스트 아이디를 뽑는 서브쿼리가 완성된다. 공간 정보를 알고 싶으니까 서브쿼리에 해당하는 HOST_ID 의 정보를 모두 (*) SELECT 한다. 마지막으로 ORDER BY 로 아이디 순 정렬을 한다.