minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (3)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 구조체배열포인터
  • mfc
  • 그램풀스팩업그레이드
  • 19년식그램SSD장착
  • 19년식그램램장착
  • GSLB
  • OpenGL회전
  • 인공지능개발자
  • 구조체매개변수
  • 그램업그레이드
  • AI배워야하나
  • hello테마
  • API문서정리
  • NextJSSwagger
  • 이것이C++이다책참고
  • 이차원구조체배열포인터
  • kafka구축
  • 리눅스파티션
  • SpringBootSwagger
  • 티스토리폰트배경색없애기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

SQL 고득점 Kit 문제풀이

프로그래머스 SQL 고득점 Kit - JOIN 문제 풀이 (Oracle)

2023. 12. 26. 18:02

프로그래머스 SQL 고득점 Kit 문제 풀이 

 위 링크에서 JOIN 문제를 풀고 풀이를 기록하는 게시글입니다. 

 

 

1. 주문량이 많은 아이스크림들 조회하기

- 주문량이 많은 순으로 3개만조회하기위해 인라인문으로 ORDER BY한 것을 받아와서, WHERE절에 ROWNUM칼럼을 사용해서 조회한다.

SELECT FLAVOR
FROM(
SELECT FLAVOR
FROM (
    SELECT FLAVOR, SUM(TOTAL_ORDER) TOTAL
    FROM JULY
    GROUP BY FLAVOR
    UNION ALL
    SELECT FLAVOR, SUM(TOTAL_ORDER) TOTAL
    FROM FIRST_HALF 
    GROUP BY FLAVOR)
GROUP BY FLAVOR
ORDER BY SUM(TOTAL) DESC)
WHERE ROWNUM < 4

 

2. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

- 다시풀어볼만한 문제!

- 여러테이블에 중복되는 조건은 join 후 한번에 처리하자.

- A기간이 B기간에 겹치는지 알기 위한 공식을 외워두자.

                A.END >= B.START AND A.START < B.END+1

- %라고 되어있어도 INTEGER일 수있다 자료형 확인하고 괜한 처리하지말자!!!

- 20% 할인이라고해서 0.2를 곱한다고 끝나는게 아니다. 원가에서 0.2를 곱한 값을 빼줘야하는거다.

   -  또는 원가에 0.8을 곱해야하는것!!!

- BETWEEN AND보다 <= >= 가 더 직관적일 수있다. BETWEEN은 반드시 포함되기 때문에 포함되지 않는조건 쓸 때 힘들다.

SELECT A.CAR_ID, A.CAR_TYPE, ROUND(A.DAILY_FEE * (100-B.DISCOUNT_RATE)/100) * 30 FEE
FROM (SELECT CAR_ID,CAR_TYPE, DAILY_FEE
FROM CAR_RENTAL_COMPANY_CAR 
WHERE CAR_ID NOT IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY  
WHERE END_DATE >= TO_DATE('2022-11-01','YYYY-MM-DD') 
AND START_DATE < TO_DATE('2022-12-01','YYYY-MM-DD'))) A,CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
WHERE A.CAR_TYPE = B.CAR_TYPE
AND A.CAR_TYPE IN ('세단','SUV')
AND B.DURATION_TYPE = '30일 이상'
AND ROUND(A.DAILY_FEE * (100-B.DISCOUNT_RATE)/100) * 30 >= 500000
AND ROUND(A.DAILY_FEE * (100-B.DISCOUNT_RATE)/100) * 30 < 2000000
ORDER BY 3 DESC, 2,1 DESC

 

 

3. FrontEnd 개발자 찾기

- & 비트연산 조인할 떄 출력값을 ID하나만 출력해야하니까 DISTINCT를 사용해서 하나만 출력해준다.

SELECT DISTINCT(B.ID), B.EMAIL,B.FIRST_NAME, B.LAST_NAME
FROM SKILLCODES  A RIGHT JOIN DEVELOPERS  B
ON A.CODE & B.SKILL_CODE 
WHERE A.CATEGORY = 'Front End'
ORDER BY 1

'SQL 고득점 Kit 문제풀이' 카테고리의 다른 글

데이터 베이스 제 4정규형 다치 종속 제거  (0) 2024.07.04
프로그래머스 SQL 고득점 Kit - String, Date 문제 풀이 (Oracle)  (0) 2023.12.26
프로그래머스 SQL 고득점 Kit - IS NULL 문제 풀이 (Oracle)  (0) 2023.12.26
프로그래머스 SQL 고득점 Kit - GROUP BY 문제 풀이 (Oracle)  (0) 2023.12.26
프로그래머스 SQL 고득점 Kit - SUM,MAX,MIN 문제 풀이 (Oracle)  (0) 2023.12.26

    티스토리툴바