Day 39:)top-n、分析関数、階層型クエリー、ユーザー作成
4484 ワード
TOP-Nクエリー select [rownum,] 컬럼1, 컬럼2
from (select 컬럼1, 컬럼1
from 테이블
order by 분석대상컬럼)
where rownum 연산자 n
-- rownum: 각 행마다 순번 할당(1부터 시작)
-- select(subquery): 바깥 select과 컬럼이 같거나 많아야함
-- order by(subquery): 바깥 쿼리에 위치시 rownum 사용 불가. 순위 기준이 됨
asc(오름차순): 하위 n위까지
desc(내림차순): 상위 n위까지
-- where: 결과가 n개만큼 출력됨.
ex) rownum <= 5 -- 5위까지 출력
select [rownum,] 컬럼1, 컬럼2
from (select 컬럼1, 컬럼1
from 테이블
order by 분석대상컬럼)
where rownum 연산자 n
-- rownum: 각 행마다 순번 할당(1부터 시작)
-- select(subquery): 바깥 select과 컬럼이 같거나 많아야함
-- order by(subquery): 바깥 쿼리에 위치시 rownum 사용 불가. 순위 기준이 됨
asc(오름차순): 하위 n위까지
desc(내림차순): 상위 n위까지
-- where: 결과가 n개만큼 출력됨.
ex) rownum <= 5 -- 5위까지 출력
-- 가장 최근에 입사한 순서로 5~10번째에 해당하는 사원의 사원번호와 입사일을 조회하시오
select employee_id, hire_date
from (select *
from (select *
from employees
order by hire_date desc)
where rownum <= 10 -- 최근 입사한 1~10번째 사원의 정보를 추출
order by hire_date asc) -- 오름차순정렬(늦->빠)
where rownum <= 6 -- 1~10위 중 10위부터 6위까지 정렬됨
order by hire_date desc; -- 최종 내림차순 정렬(빠->늦)
ぶんせきかんすう select 분석함수 over([partition by 컬럼][order by 컬럼])
from 테이블명
select 분석함수 over([partition by 컬럼][order by 컬럼])
from 테이블명
種類
ランキング関数
rank
select rank('확인할데이터') within group (order by 컬럼명)
from 테이블
-- 컬럼명으로 정렬 시, '확인할데이터'의 순위를 반환
-- 확인할 데이터는 반드시 컬럼명에 속해있어야함
-- 확인할 데이터:'smith', 컬럼:salary -> 조회불가
select rank() over (order by 컬럼명) rank
form 테이블
-- rank컬럼이 생성되며 순위를 출력함
グループ別クエリーselect rank() over (partition by department_id
order by salary)
from 테이블
-- 테이블 내의 salary 순위를 department_no별로 나누어 출력함
dense_rank
row_number
ランキングは
集約関数
https://velog.io/@yoonee1126/Day34-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98
階層型クエリー select [level], -- 최상위로부터 몇번째 행인지 숫자로 나타냄
-- 최상위 1부터 순서대로 2,3을 반환
컬럼1, 컬럼2
from 테이블
where [조건식]
start with 조건식 -- 계층검색 시작지점(최상위계층)을 지정함
connect by prior 조건식 -- 연결조건 지정
-- subquery 사용불가
select [level], -- 최상위로부터 몇번째 행인지 숫자로 나타냄
-- 최상위 1부터 순서대로 2,3을 반환
컬럼1, 컬럼2
from 테이블
where [조건식]
start with 조건식 -- 계층검색 시작지점(최상위계층)을 지정함
connect by prior 조건식 -- 연결조건 지정
-- subquery 사용불가
-- 100번 직원의 하위에 위치하는 직원 조회
select leve, employee_id, first_name
from employees
start with employee_id = 100
connect by prior employee_id = manager_id
and level <= 2;
-- 205번 직원의 상위에 위치하고 있는 매니저 조회
select level, employee_id, first_name
from employees
start with employee_id = 205
connect by prior manager_id = employee_id;
ユーザーと権限管理
新規ユーザーの作成
接続
alter session set"_oracle_script" = true; -- 사용자 생성방식을 오라클 12 이전으로 설정
create user 유저이름 identified by "비밀번호"
grant 부여할 권한
**참고: 모든 권한주기
grant connect, dba, resource to 계정명;
他のユーザdbへのアクセス
grant select
on 테이블명
to 부여받을 계정
select
form 부여받은계정.테이블명
synonym
dbオブジェクトの別名を定義し、
定義
create synonym 별칭
for 계정.테이블명
select *
from 별칭
Reference
この問題について(Day 39:)top-n、分析関数、階層型クエリー、ユーザー作成), 我々は、より多くの情報をここで見つけました https://velog.io/@yoonee1126/Day39-top-n분석-분석함수-계층검색-권한관리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol