프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
8
9
  SELECT AO.ANIMAL_ID, 
         AO.NAME
    FROM ANIMAL_OUTS AO
    JOIN ANIMAL_INS AI
      ON AO.ANIMAL_ID=AI.ANIMAL_ID
   WHERE AO.DATETIME < AI.DATETIME
ORDER BY AI.DATETIME
;
 
 

🙂 확인 사항

1. ANIMAL_INS, ANIMAL_OUTS 테이블

2. 보호 시작일보다 입양일이 더 빠른 동물

3. 아이디, 이름 조회

4. 보호 시작일 오름차순 정렬

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WITH JOINTABLE AS (
    SELECT AO.ANIMAL_ID, 
           AO.NAME, 
           AI.DATETIME DATETIME_IN,
           AO.DATETIME DATETIME_OUT
      FROM ANIMAL_OUTS AO
      JOIN ANIMAL_INS AI
        ON AO.ANIMAL_ID=AI.ANIMAL_ID
)
  SELECT ANIMAL_ID, NAME
    FROM JOINTABLE
   WHERE DATETIME_IN>DATETIME_OUT
ORDER BY DATETIME_IN
;
 
 

공통 표현식 사용

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
8
9
  SELECT II.INGREDIENT_TYPE, 
         SUM(FH.TOTAL_ORDER) TOTAL_ORDER
    FROM FIRST_HALF FH
    JOIN ICECREAM_INFO II
      ON FH.FLAVOR=II.FLAVOR
GROUP BY II.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER
;
 
 

🙂 확인 사항

1. FIRST_HALF, ICECREA_INFO 테이블

2. 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총 주문량 조회

3. 총주문량 기준 오름차순

4. 총주문량 컬럼명: TOTAL_ORDER

 

😮  외의 풀이

1
2
3
4
5
6
7
8
 SELECT DISTINCT II.INGREDIENT_TYPE, 
         SUM(FH.TOTAL_ORDER) OVER (PARTITION BY II.INGREDIENT_TYPE) TOTAL_ORDER
    FROM FIRST_HALF FH
    JOIN ICECREAM_INFO II
      ON FH.FLAVOR=II.FLAVOR
ORDER BY TOTAL_ORDER
;
 
 

윈도우 함수 사용

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
WITH JOINTABLE AS(
    SELECT II.INGREDIENT_TYPE, 
           FH.TOTAL_ORDER
      FROM FIRST_HALF FH
      JOIN ICECREAM_INFO II
        ON FH.FLAVOR=II.FLAVOR
)
  SELECT INGREDIENT_TYPE, 
         SUM(TOTAL_ORDER)
    FROM JOINTABLE
GROUP BY INGREDIENT_TYPE
ORDER BY SUM(TOTAL_ORDER)
;
 
 

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
8
9
  SELECT O.ANIMAL_ID, 
         O.NAME
    FROM ANIMAL_OUTS O
    FULL JOIN ANIMAL_INS I
      ON O.ANIMAL_ID = I.ANIMAL_ID
   WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID
;
 
 

Full outer join 사용

 

🙂 확인 사항

1. ANIMAL_INS, ANIMAL_OUTS 테이블

2. 입양을 간 기록은 있는데,

3. 보호소에 들어온 기록은 없는

4. 동물의 ID, 이름 조회

5. 동물 ID 기준 오름차순

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
  SELECT ANIMAL_ID, 
         NAME
    FROM ANIMAL_OUTS
   WHERE ANIMAL_ID NOT IN (
       SELECT ANIMAL_ID 
         FROM ANIMAL_INS 
   )
ORDER BY ANIMAL_ID
;
 
 

중첩 서브 query 사용

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
8
9
  SELECT MCDP_CD "진료과 코드"
         COUNT(APNT_NO) "5월예약건수"
    FROM APPOINTMENT
   WHERE TO_CHAR(APNT_YMD, 'YYYY-MM'= '2022-05'
GROUP BY MCDP_CD
ORDER BY "5월예약건수"
         "진료과 코드"
;
 
 

🙂 확인 사항

1. APPOINTMENT 테이블

2. 2022년 5월에 예약

3. 한 환자 수를 진료과 코드 별로 조회

4. 컬럼명 진료과 코드, 5월예약건수

5. 진료과별 예약한 환자 수 기준 오름차순 → 진료과 코드 기준 오름차순

 

😮  외의 풀이

1
2
3
4
5
6
7
8
  SELECT DISTINCT MCDP_CD "진료과 코드"
         COUNT(APNT_NO) OVER (PARTITION BY MCDP_CD) "5월예약건수"
    FROM APPOINTMENT
   WHERE TO_CHAR(APNT_YMD, 'YYYY-MM'= '2022-05'
ORDER BY "5월예약건수"
         "진료과 코드"
;
 
 

윈도우 함수 사용

 

1
2
3
4
5
6
7
8
9
10
11
12
WITH CONDITION AS(
    SELECT MCDP_CD
      FROM APPOINTMENT
      WHERE TO_CHAR(APNT_YMD, 'YYYY-MM'= '2022-05'
)
  SELECT DISTINCT MCDP_CD "진료과 코드",
         COUNT(MCDP_CD) OVER (PARTITION BY MCDP_CD) "5월예약건수"
    FROM CONDITION 
ORDER BY "5월예약건수"
         "진료과 코드"
;
 
 

공통 표현식 사용

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
8
9
10
  SELECT B.BOOK_ID, 
         A.AUTHOR_NAME, 
         TO_CHAR(B.PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE
    FROM BOOK B
    JOIN AUTHOR A
      ON B.AUTHOR_ID=A.AUTHOR_ID
   WHERE B.CATEGORY='경제'
ORDER BY PUBLISHED_DATE
;
 
 

🙂 확인 사항

1. BOOK, AUTHOR 테이블

2. 경제 카테고리

3. 도서ID, 저자명, 출반일 출력

4. 출판일 기준 오름차순

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WITH TOTAL AS(
    SELECT B.BOOK_ID,
           A.AUTHOR_NAME,
           B.PUBLISHED_DATE, 
           B.CATEGORY
      FROM BOOK B
      JOIN AUTHOR A
        ON B.AUTHOR_ID=A.AUTHOR_ID
)
  SELECT BOOK_ID, 
         AUTHOR_NAME, 
         TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE
    FROM TOTAL
   WHERE CATEGORY='경제'
ORDER BY PUBLISHED_DATE
;
 
 

Join 테이블을 공통 표현식으로 사용

 

1
2
3
4
5
6
7
8
9
10
  SELECT B.BOOK_ID,
         A.AUTHOR_NAME,
         TO_CHAR(B.PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE
    FROM BOOK B, 
         AUTHOR A
   WHERE B.AUTHOR_ID = A.AUTHOR_ID
     AND B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE
;
 
 

where 조건절로 inner join 처리

 

 

 

🔗 소스 코드
GitHub