Top 32 오라클 Keep The 232 Detailed Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 오라클 keep on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.maxfit.vn team, along with other related topics such as: 오라클 keep 오라클 KEEP PARTITION, 오라클 KEEP dense_rank, SQL KEEP, 오라클 OVER() 함수, 오라클 dense_rank, PostgreSQL KEEP DENSE_RANK, Oracle MAX KEEP, Dense_rank


IGNITO (이그니토)의 킬링벌스를 라이브로! I Hit Em Up, Keep It Hardcore, Lost Chronicle, 비관론, 무언가 (無言歌) 등
IGNITO (이그니토)의 킬링벌스를 라이브로! I Hit Em Up, Keep It Hardcore, Lost Chronicle, 비관론, 무언가 (無言歌) 등


[Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값)

  • Article author: gent.tistory.com
  • Reviews from users: 15276 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값) 오라클에서 KEEP 키워드를 사용하면 행 그룹(GROUP BY) 내에서 최고 또는 최고 순위 행으로 집계를 할 수 있다. 그룹별로 MAX 또는 MIN 수치 값은 … …
  • Most searched keywords: Whether you are looking for [Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값) 오라클에서 KEEP 키워드를 사용하면 행 그룹(GROUP BY) 내에서 최고 또는 최고 순위 행으로 집계를 할 수 있다. 그룹별로 MAX 또는 MIN 수치 값은 … 오라클에서 KEEP 키워드를 사용하면 행 그룹(GROUP BY) 내에서 최고 또는 최고 순위 행으로 집계를 할 수 있다. 그룹별로 MAX 또는 MIN 수치 값은 쉽게 표시할 수 있지만, MAX에 해당하는 행의 값 중에서 특정 텍..
  • Table of Contents:

Header Menu

Main Menu

[Oracle] 오라클 KEEP 사용법 (최저 최고 순위 값)

‘데이터베이스오라클’ 관련 글

Sidebar – Right

Sidebar – Footer 1

Sidebar – Footer 2

Sidebar – Footer 3

Copyright © 젠트의 프로그래밍 세상 All Rights Reserved

Designed by JB FACTORY

[Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값)
[Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값)

Read More

나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법

  • Article author: hello-nanam.tistory.com
  • Reviews from users: 49970 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법 오라클 KEEP KEEP 단어 자체의 의미를 보면 “유지하다” 라는 의미를 가지고 있습니다. 오라클에서 사용하는 KEEP 은 단독으로 사용하기 보다는 FIRST … …
  • Most searched keywords: Whether you are looking for 나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법 오라클 KEEP KEEP 단어 자체의 의미를 보면 “유지하다” 라는 의미를 가지고 있습니다. 오라클에서 사용하는 KEEP 은 단독으로 사용하기 보다는 FIRST … 오라클 KEEP KEEP 단어 자체의 의미를 보면 “유지하다” 라는 의미를 가지고 있습니다. 오라클에서 사용하는 KEEP 은 단독으로 사용하기 보다는 FIRST , LAST 와 함께 사용하게 되는데 정렬을 통해 첫번째나 마지막..
  • Table of Contents:

오라클 KEEP FIRST LAST 예제로 확인하는 사용법

샘플데이터

CAUTION

나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법
나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법

Read More

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

  • Article author: aljjabaegi.tistory.com
  • Reviews from users: 34934 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법 KEEP의 사용법을 모르는 경우라면 서브쿼리를 사용하여 가져오려 할 것이다. 예). SELECT 컬럼A. FROM 테이블A. WHERE 컬럼B = (SELECT MAX(컬럼B) FROM … …
  • Most searched keywords: Whether you are looking for Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법 KEEP의 사용법을 모르는 경우라면 서브쿼리를 사용하여 가져오려 할 것이다. 예). SELECT 컬럼A. FROM 테이블A. WHERE 컬럼B = (SELECT MAX(컬럼B) FROM … Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법 쿼리를 짜다보면 가장 큰, 가장 작은 값을 가져와야 할 때가 있다. 이..
  • Table of Contents:

방문자 통계

다크 모드

다국어 번역

글자 크기

카테고리

최근 글

인기 글

최근 댓글

태그

글 보관함

태그

볼 만한 글

댓글0

💲 추천 글

티스토리툴바

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법
Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

Read More

[오라클 SQL] 오라클 KEEP 함수 사용방법

  • Article author: afsdzvcx123.tistory.com
  • Reviews from users: 11246 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [오라클 SQL] 오라클 KEEP 함수 사용방법 안녕하세요. 오늘은 오라클 문법 중에서 KEEP 함수 사용 방법에 대해서 알려 드리려고 합니다. KEEP이란 한글로 해석하자면 “유지하다” 인데요. …
  • Most searched keywords: Whether you are looking for [오라클 SQL] 오라클 KEEP 함수 사용방법 안녕하세요. 오늘은 오라클 문법 중에서 KEEP 함수 사용 방법에 대해서 알려 드리려고 합니다. KEEP이란 한글로 해석하자면 “유지하다” 인데요. 안녕하세요. 오늘은 오라클 문법 중에서 KEEP 함수 사용 방법에 대해서 알려 드리려고 합니다. KEEP이란 한글로 해석하자면 “유지하다” 인데요. 오라클에서 보통 KEEP 함수를 사용하는 경우는 대개 “A 컬럼을..
  • Table of Contents:

Main Menu

[오라클 SQL] 오라클 KEEP 함수 사용방법

‘Database(데이터베이스)Oracle’ 관련 글

Sidebar

Footer 1

Footer 2

Footer 3

Copyright © BeomBeomJoJo – Programmer All Rights Reserved

Designed by JB FACTORY

[오라클 SQL] 오라클 KEEP 함수 사용방법
[오라클 SQL] 오라클 KEEP 함수 사용방법

Read More

[Oracle] 오라클 KEEP 사용방법

  • Article author: jae-baek.tistory.com
  • Reviews from users: 5292 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Oracle] 오라클 KEEP 사용방법 [Oracle] 오라클 KEEP 사용방법 · KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 … …
  • Most searched keywords: Whether you are looking for [Oracle] 오라클 KEEP 사용방법 [Oracle] 오라클 KEEP 사용방법 · KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 … KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 사용하는 함수입니다. KEEP 은 주로 단독으로 사용하기 보다는 FIRST, LAST 와 함께 사용합니..
  • Table of Contents:

관련글

댓글1

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

[Oracle] 오라클 KEEP 사용방법
[Oracle] 오라클 KEEP 사용방법

Read More

오라클 Keep 함수

  • Article author: my-t-space.tistory.com
  • Reviews from users: 40363 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 오라클 Keep 함수 오라클 Keep 함수 … 정렬을 통해 나온 row를 keep(보관)해 놓고 사용할 수 있는 함수. FIRST 또는 LAST와 함께 쓰인다. … => 부서별로 GROUP BY 후 MAX로 … …
  • Most searched keywords: Whether you are looking for 오라클 Keep 함수 오라클 Keep 함수 … 정렬을 통해 나온 row를 keep(보관)해 놓고 사용할 수 있는 함수. FIRST 또는 LAST와 함께 쓰인다. … => 부서별로 GROUP BY 후 MAX로 … 정렬을 통해 나온 row를 keep(보관)해 놓고 사용할 수 있는 함수. FIRST 또는 LAST와 함께 쓰인다. ex) 부서별로 가장 높은 급여를 받는 사람을 구하고 싶을때 => 부서별로 GROUP BY 후 MAX로 값을 추출하면 된다…입맛에 맞게 정리하는
    My Space~~
  • Table of Contents:
오라클 Keep 함수
오라클 Keep 함수

Read More

[펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 | 호러블캣의 연구소

  • Article author: itpsolver.com
  • Reviews from users: 49891 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 | 호러블캣의 연구소 [펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 … 먼저 테스트용 데이터를 만들어보겠습니다. … 이 데이터를 A컬럼으로 GROUP BY 할겁니다. 근데 B컬럼의 MAX값을 … …
  • Most searched keywords: Whether you are looking for [펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 | 호러블캣의 연구소 [펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 … 먼저 테스트용 데이터를 만들어보겠습니다. … 이 데이터를 A컬럼으로 GROUP BY 할겁니다. 근데 B컬럼의 MAX값을 … – 출처 : http://blog.naver.com/jazz1234k/40121360816 -먼저 테스트용 데이터를 만들어보겠습니다.   SELECT 1 A, ‘AAB’ B, 2224 C FROM DUAL    UNION ALL    SELECT 1 A, ‘AAB’ B, 2224 C FROM DUAL    UNION ALL    SELECT 1 A, ‘AAC’ B, 2224 C FROM DUAL    UNION ALL    SELECT 1 A, ‘AAD’ B, 2224 C FROM DUAL    UNION…
  • Table of Contents:
[펌글] ORACLE - MAX() KEEP() / MIN() KEEP() - 오라클 | 호러블캣의 연구소
[펌글] ORACLE – MAX() KEEP() / MIN() KEEP() – 오라클 | 호러블캣의 연구소

Read More

KEEP(DENSE_RANK FIRST/LAST) :: passionha’s note

  • Article author: passionha.tistory.com
  • Reviews from users: 40288 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about KEEP(DENSE_RANK FIRST/LAST) :: passionha’s note DBMS/Oracle. KEEP(DENSE_RANK FIRST/LAST). passionha 2019. 12. 13. …
  • Most searched keywords: Whether you are looking for KEEP(DENSE_RANK FIRST/LAST) :: passionha’s note DBMS/Oracle. KEEP(DENSE_RANK FIRST/LAST). passionha 2019. 12. 13. KEEP(DENSE_RANK FIRST ORDER BY A)함수 A 컬럼 기준 정렬 후 first/last 행의 B 컬럼 값 추출 하기 first나 last로 order by 한 로우들 중에서 첫번째 혹은 마지막로우를 가져온다 SELECT MIN(B) KEEP(DENSE_RANK..
  • Table of Contents:

TAG

관련글 관련글 더보기

인기포스트

KEEP(DENSE_RANK FIRST/LAST) :: passionha’s note
KEEP(DENSE_RANK FIRST/LAST) :: passionha’s note

Read More

sql – Explanation of KEEP in Oracle FIRST/LAST – Stack Overflow

  • Article author: stackoverflow.com
  • Reviews from users: 7981 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about sql – Explanation of KEEP in Oracle FIRST/LAST – Stack Overflow KEEP (DENSE_RANK LAST means give a (consecutive) ranking to those ordered rows within each group (rows with entical values for the ordering … …
  • Most searched keywords: Whether you are looking for sql – Explanation of KEEP in Oracle FIRST/LAST – Stack Overflow KEEP (DENSE_RANK LAST means give a (consecutive) ranking to those ordered rows within each group (rows with entical values for the ordering …
  • Table of Contents:

2 Answers
2

Your Answer

Not the answer you’re looking for Browse other questions tagged sql oracle or ask your own question

sql - Explanation of KEEP in Oracle FIRST/LAST - Stack Overflow
sql – Explanation of KEEP in Oracle FIRST/LAST – Stack Overflow

Read More

[OracleDB] 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 1606 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [OracleDB] 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE : 네이버 블로그 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE 실습을 통해 이해해보자. 우선 사번과 해당 사원의 직급과 급여가 저장된 테이블이 있다고 가정하자. …
  • Most searched keywords: Whether you are looking for [OracleDB] 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE : 네이버 블로그 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE 실습을 통해 이해해보자. 우선 사번과 해당 사원의 직급과 급여가 저장된 테이블이 있다고 가정하자.
  • Table of Contents:

카테고리 이동

기술

이 블로그 
Database
 카테고리 글

카테고리

이 블로그 
Database
 카테고리 글

[OracleDB] 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE : 네이버 블로그
[OracleDB] 오라클DB RANK, DENSE_RANK, KEEP, FIRST_VALUE : 네이버 블로그

Read More


See more articles in the same category here: toplist.maxfit.vn/blog.

[Oracle] 오라클 KEEP 사용법 (최저, 최고 순위 값)

오라클에서 KEEP 키워드를 사용하면 행 그룹(GROUP BY) 내에서 최고 또는 최고 순위 행으로 집계를 할 수 있다. 그룹별로 MAX 또는 MIN 수치 값은 쉽게 표시할 수 있지만, MAX에 해당하는 행의 값 중에서 특정 텍스트 값을 같이 표시하기 위해서는 서브 쿼리를 사용하는 방법이 많이 사용된다. 그러나 KEEP 키워드를 사용하면 한 번의 쿼리문으로 최저 또는 최고에 해당하는 행의 값들을 쉽게 가져올 수 있다. KEEP 키워드는 GROUP BY 절 또는 OVER 절과 함께 사용해야 한다.

오라클 KEEP 키워드

KEEP을 처음 사용한다면 순위 함수(DENSE_RANK)를 알고 있으면 조금 더 쉽게 이해할 수 있다.

기본 사용법

KEEP (DENSE_RANK LAST ) – 마지막 순위 값 가져오기

SELECT job , MAX(sal) KEEP(DENSE_RANK LAST ORDER BY sal) AS sal_last , MAX(ename) KEEP(DENSE_RANK LAST ORDER BY sal) AS ename_last FROM emp WHERE job IN (‘MANAGER’, ‘SALESMAN’) GROUP BY job

직군(job) 별로 DENSE_RANK를 사용하여 연봉(sal) 순위로 정렬하여 직군별 마지막 직원의 직원명과 연봉을 표시하는 예제이다. (연봉이 낮은 순에서 높은 순(ASC)으로 정렬되었음)

MAX(sal)의 값은 KEEP을 사용하지 않아도 쉽게 가져올 수 있지만, KEEP를 사용하지 않고 MAX(sal)에 해당하는 직원명을 가져오기 위해서는 한 번의 쿼리문으로 어렵다.

DENSE_RANK 함수를 사용하여 직군(job) 별로 순위를 부여하여 직군별 마지막 순위 값을 가져와서 표시한다. 마지막 순위의 값이 1행만 존재하기 때문에 MAX 함수는 큰 의미는 없다. 마지막 순위의 값이 여래행인 경우 MAX 함수에 의해서 값이 변동될 수 있다.

KEEP (DENSE_RANK FIRST ) – 처음 순위 값 가져오기

SELECT job , MAX(sal) KEEP(DENSE_RANK FIRST ORDER BY sal) AS sal_first , MAX(ename) KEEP(DENSE_RANK FIRST ORDER BY sal) AS ename_first FROM emp WHERE job IN (‘MANAGER’, ‘SALESMAN’) GROUP BY job

직군(job) 별로 DENSE_RANK를 사용하여 연봉(sal) 순위로 정렬하여 직군별 첫 순위 직원의 직원명과 연봉을 표시하는 예제이다. (연봉이 낮은 순에서 높은 순(ASC)으로 정렬되었음)

직군이 MANAGER인 경우 첫 순위의 행이 1개이기 때문에 값이 변동 없이 표시되지만, 직군이 SALESMAN인 경우 첫 순위의 값이 2개의 행이라서 MAX 함수에 의해서 2개의 값 중 MAX 값이 표시된다.

MAX(ename) → ‘WARD’

MIN(ename) → ‘MARTIN’

순위가 중복되는 경우 정확하지 않는 값이 표시될 수 있으므로, 정렬 조건을 세분화하여 순위가 겹치지 않게 하는 것이 좋다.

활용 예제

다양한 집계 함수에서 사용 가능

SELECT job , MAX(sal) KEEP(DENSE_RANK FIRST ORDER BY sal) AS keep_max , MIN(sal) KEEP(DENSE_RANK FIRST ORDER BY sal) AS keep_min , SUM(sal) KEEP(DENSE_RANK FIRST ORDER BY sal) AS keep_sum , COUNT(sal) KEEP(DENSE_RANK FIRST ORDER BY sal) AS keep_count FROM emp WHERE job IN (‘MANAGER’, ‘SALESMAN’) GROUP BY job

MIN, MAX 함수 외에도 다양한 집계 함수에서 사용 가능하다. 상황에 맞는 집계 함수와 함께 사용하면 된다.

OVER 절과 함께 사용 가능 (GROUP BY 절 없이)

SELECT ename , job , sal , MAX(sal) KEEP(DENSE_RANK LAST ORDER BY sal) OVER(PARTITION BY job) AS sal_last , MAX(ename) KEEP(DENSE_RANK LAST ORDER BY sal) OVER(PARTITION BY job) AS ename_last FROM emp WHERE job IN (‘MANAGER’, ‘SALESMAN’) ORDER BY job, sal

OVER 절과 함께 사용하면 GROUP BY 절 없이도 사용할 수 있다.

예제쿼리(테이블포함).txt 0.00MB

나남나여 :: 오라클 KEEP , FIRST , LAST 예제로 확인하는 사용법

반응형

오라클 KEEP

KEEP 단어 자체의 의미를 보면

“유지하다” 라는 의미를 가지고 있습니다.

오라클에서 사용하는 KEEP 은 단독으로 사용하기 보다는

FIRST , LAST 와 함께 사용하게 되는데

정렬을 통해 첫번째나 마지막에 나온 row 를 KEEP 해놓고 ( 유지 / 보관해놓고 )

해당 row 의 다른 컬럼을 사용한다고 생각하면 쉽게 사용할 수 있습니다.

다만 어떤 기준으로 추출하는지 명시적으로 사용할 수 있는 장점이 있습니다.

잠깐 예를 들어볼까요?

어느 회사에서 “부서별로 가장 높은 급여를 받는 사람이 얼마지?” 라고 하면

단순히 부서별 GROUP BY 후 MAX 값으로 추출하면 되겠죠?

그런데 “부서별로 가장 오래 근무한 사람의 급여가 얼마지?” 라고 하면

부서별 입사일이 가장 빠른 사람을 추출 후 급여를 찾아야 해서 서브쿼리나 다른 방법으로 쿼리를 해야겠죠?

하지만 KEEP 문법을 사용하면 한번에 찾을수 있더라고요!

그럼 샘플 데이터를 통해서 확인해볼께요!

샘플데이터

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 1980-12-17 800 (null) 20 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 7566 JONES MANAGER 7839 1981-04-02 2975 (null) 20 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 7698 BLAKE MANAGER 7839 1981-05-01 2850 (null) 30 7782 CLARK MANAGER 7839 1981-06-09 2450 (null) 10 7788 SCOTT ANALYST 7566 1987-04-19 3000 (null) 20 7839 KING PRESIDENT (null) 1981-11-17 5000 (null) 10 7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30 7876 ADAMS CLERK 7788 1987-05-23 1100 (null) 20 7900 JAMES CLERK 7698 1981-12-03 950 (null) 30 7902 FORD ANALYST 7566 1981-12-03 3000 (null) 20 7934 MILLER CLERK 7782 1982-01-23 1300 (null) 10

FIRST 와 LAST 는 비슷하게 사용할 수 있는데

집계함수나 분석함수로 조회된 ROW 에 대해 동작할 수 있습니다.

FIRST나 LAST 를 사용하면

HIREDATE 라는 특정 컬럼을 기준으로 정렬해야 하지만 필요한 값이 HIREDATE 가 아닌 경우

FIRST 나 LAST 함수를 사용하면 SELF JOIN 이나 VIEW 가 필요 없이 더 좋은 성능으로 사용할 수 있습니다.

SELECT DEPTNO , MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY HIREDATE ) AS JOIN_FIRST_SAL , MAX(SAL) KEEP ( DENSE_RANK LAST ORDER BY HIREDATE ) AS JOIN_LAST_SAL FROM EMP GROUP BY DEPTNO

결과

DEPTNO JOIN_FIRST_SAL JOIN_LAST_SAL 10 2450 1300 20 800 1100 30 1600 950

위처럼 입사일(HIREDATE)을 기준으로

입사일이 오래된 순으로 정렬(FIRST)할 것인지

최근 입사한 순으로 정렬(LAST)할 것인지 정렬 후

집계함수(MAX, MIN)를 사용하면 집계함수에서 조회 된

첫번째나 마지막에 출력된 row 에 존재하는 급여(SAL)컬럼을 사용 할 수 있습니다.

CAUTION

하지만, FIRST 나 LAST 를 사용 시 주의 할 점이 있는데

바로, 정렬 시 null 이 존재하는 경우입니다.

정렬을 FIRST 로 입력 시 null 값은 기본적으로 맨 처음에 조회되기 때문에

의도된 바와 다른 결과를 조회할 수 있는데 아래 예를 확인해보겠습니다.

SELECT DEPTNO , MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY MGR NULLS FIRST ) AS MGR_NULLS_FST , MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY MGR NULLS LAST ) AS MGR_NULLS_LST FROM EMP GROUP BY DEPTNO

결과

DEPTNO MGR_NULLS_FST MGR_NULLS_LST 10 5000 1300 20 3000 3000 30 950 950

같은 문법이지만 NULLS FIRST 로 사용했느냐 NULLS LAST 로 사용했느냐에 따라

처리결과가 다르게 조회된 것을 확인할 수 있습니다.

NULLS FIRST 와 NULLS LAST 는 null 값이 존재할 때

null 을 앞에 조회되게 할 지, 뒤에 조회되게 할 지를 명시하는 문장이라고 보시면 됩니다.

같은 사용방법으로 맨 하단 ORDER BY 문장에도 사용할 수 있어요

SELECT * FROM EMP ORDER BY MGR NULLS LAST>

결과

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7902 FORD ANALYST 7566 1981-12-03 3000 (null) 20 7788 SCOTT ANALYST 7566 1987-04-19 3000 (null) 20 7900 JAMES CLERK 7698 1981-12-03 950 (null) 30 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 7934 MILLER CLERK 7782 1982-01-23 1300 (null) 10 7876 ADAMS CLERK 7788 1987-05-23 1100 (null) 20 7698 BLAKE MANAGER 7839 1981-05-01 2850 (null) 30 7566 JONES MANAGER 7839 1981-04-02 2975 (null) 20 7782 CLARK MANAGER 7839 1981-06-09 2450 (null) 10 7369 SMITH CLERK 7902 1980-12-17 800 (null) 20 7839 KING PRESIDENT (null) 1981-11-17 5000 (null) 10

SELECT * FROM EMP ORDER BY MGR NULLS FIRST

결과

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7839 KING PRESIDENT (null) 1981-11-17 5000 (null) 10 7788 SCOTT ANALYST 7566 1987-04-19 3000 (null) 20 7902 FORD ANALYST 7566 1981-12-03 3000 (null) 20 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 7900 JAMES CLERK 7698 1981-12-03 950 (null) 30 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 7934 MILLER CLERK 7782 1982-01-23 1300 (null) 10 7876 ADAMS CLERK 7788 1987-05-23 1100 (null) 20 7698 BLAKE MANAGER 7839 1981-05-01 2850 (null) 30 7566 JONES MANAGER 7839 1981-04-02 2975 (null) 20 7782 CLARK MANAGER 7839 1981-06-09 2450 (null) 10 7369 SMITH CLERK 7902 1980-12-17 800 (null) 20

결과와 같이 MGR 을 기준으로 오름차순으로 정렬되는건 동일하지만

null 의 위치가 어디에 위치하라고 명시해놓는 문법이라고 보시면 됩니다

또한, OVER 절을 사용하면 분석함수로도 사용할 수 있습니다.

부서에서 제일먼저 입사한 직원과 나중에 입사한 직원의 급여가 본인의 급여와 어느정도 차이나는지 비교해보세요.

SELECT DEPTNO, ENAME, SAL, HIREDATE , MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY HIREDATE ) OVER ( PARTITION BY DEPTNO ) AS JOIN_FIRST_SAL /* 부서내 가장 먼저 입사한 직원의 급여 */ , MAX(SAL) KEEP ( DENSE_RANK LAST ORDER BY HIREDATE ) OVER ( PARTITION BY DEPTNO ) AS JOIN_LAST_SAL /* 부서내 최근 입사한 직원의 급여 */ , SAL – MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY HIREDATE ) OVER ( PARTITION BY DEPTNO ) AS JOIN_FIRST_DIFF /* 부서내 가장 먼저 입사한 직원과 본인의 급여 비교 */ , SAL – MAX(SAL) KEEP ( DENSE_RANK LAST ORDER BY HIREDATE ) OVER ( PARTITION BY DEPTNO ) AS JOIN_LAST_DIFF /* 부서내 최근 입사한 직원과 본인의 급여 비교 */ FROM EMP ORDER BY DEPTNO, HIREDATE

DEPTNO ENAME SAL HIREDATE JOIN_FIRST_SAL JOIN_LAST_SAL JOIN_FIRST_DIFF JOIN_LAST_DIFF 10 CLARK 2450 1981-06-09 2450 1300 0 1150 10 KING 5000 1981-11-17 2450 1300 2550 3700 10 MILLER 1300 1982-01-23 2450 1300 -1150 0 20 SMITH 800 1980-12-17 800 1100 0 -300 20 JONES 2975 1981-04-02 800 1100 2175 1875 20 FORD 3000 1981-12-03 800 1100 2200 1900 20 SCOTT 3000 1987-04-19 800 1100 2200 1900 20 ADAMS 1100 1987-05-23 800 1100 300 0 30 ALLEN 1600 1981-02-20 1600 950 0 650 30 WARD 1250 1981-02-22 1600 950 -350 300 30 BLAKE 2850 1981-05-01 1600 950 1250 1900 30 TURNER 1500 1981-09-08 1600 950 -100 550 30 MARTIN 1250 1981-09-28 1600 950 -350 300 30 JAMES 950 1981-12-03 1600 950 -650 0

위의 쿼리는 부서별로 파티션을 나눈 후 최초입사, 최근입사로 정렬 후 급여를 추출했습니다.

입사일로 MAX 와 MIN 을 조회했지만 실질적으로 급여를 추출할 수 있었습니다.

이상 KEEP 문법을 사용하여 쿼리를 간단하게 작성하는법을 확인해보았습니다.

집계함수 MIN, MAX, SUM, AVG, COUNT, VARIANCE, STDDEV 함수에 적용하여

FIRST 나 LAST 에 해당하는 row 의 값에 대해 동작할 수 있으니 직접 사용하여 확인해보세요^^

반응형

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

728×90

SMALL

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

쿼리를 짜다보면 가장 큰, 가장 작은 값을 가져와야 할 때가 있다.

이럴 땐 MAX() 나 MIN()함수를 사용하여 해당 컬럼을 가져온다.

그런데, 이렇게 MAX 나 MIN 함수로 가져온 값이 있는 행중에 다른 컬럼을 가져와야 한다면

어떻게 해야 할까?

KEEP의 사용법을 모르는 경우라면 서브쿼리를 사용하여 가져오려 할 것이다.

예)

SELECT 컬럼A

FROM 테이블A

WHERE 컬럼B = (SELECT MAX(컬럼B)

FROM 테이블A)

물론 값은 같다.

하지만 조건없이 구현이 가능하다.

KEEP()함수을 사용하여 보자.

예)

SELECT MAX(컬럼A)KEEP(DENSE_RANK FIRST ORDER BY 컬럼B DESC)

FROM 테이블A

설명은 하자면 컬럼B로 ORDER BY 한 후 가장 큰값이 있는 행의 컬럼A를 가져오는 것이다.

이처럼 간단한 경우라면 서브쿼리를 쓰던 KEEP() 함수를 쓰던

별 차이가 없어 보이지만

쿼리가 복잡해지고 서브에 서브쿼리를 사용하는 경우라면 간단히 원하는 값을 가져올 수 있으니

유용하게 사용하자.!

LIST

So you have finished reading the 오라클 keep topic article, if you find this article useful, please share it. Thank you very much. See more: 오라클 KEEP PARTITION, 오라클 KEEP dense_rank, SQL KEEP, 오라클 OVER() 함수, 오라클 dense_rank, PostgreSQL KEEP DENSE_RANK, Oracle MAX KEEP, Dense_rank

Leave a Comment