포스팅 목차
91. Display all employees with there dept name.
* 부서명과 해당 부서에서 근무하는 직원의 이름을 출력하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- Inner join stackoverflow : How to join (merge) data frames (inner, outer, left, right) [링크]
- 내부 조인(Inner Join)을 만족하는 데이터 추출
|
1. Oracle(오라클)
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 내부조인(Inner Join)하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
Oracle Programming |
select ename, dname
from emp e, dept d
where e.deptno = d.deptno;
2. Python Pandas(파이썬)
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 merge() 함수를 이용하여 내부조인(Inner Join)을 수행하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
Python Programming |
pd.merge(emp, dept, how='inner', left_on=['deptno'], right_on=['deptno'])[['ename','dname']].head(7)
Results |
ename | dname |
SMITH | RESEARCH |
JONES | RESEARCH |
SCOTT | RESEARCH |
ADAMS | RESEARCH |
FORD | RESEARCH |
ALLEN | SALES |
WARD | SALES |
3. R Programming (R Package)
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 merge() 함수를 이용하여서 내부조인(Inner Join)을 수행하여 부서명과 해당 부서의 사원이름을 함께 출력한다.
R Programming |
%%R
base::merge(emp,dept,by.x=c("deptno"),by.y=c("deptno"),all=F)[c('ename','dname')][1:10, ]
Results |
ename dname
1 CLARK ACCOUNTING
2 KING ACCOUNTING
3 MILLER ACCOUNTING
4 SMITH RESEARCH
5 ADAMS RESEARCH
6 JONES RESEARCH
7 FORD RESEARCH
8 SCOTT RESEARCH
9 ALLEN SALES
10 BLAKE SALES
4. R Dplyr Package
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 inner_join() 함수를 통하여 내부조인(Inner Join)을 수행하여 부서명과 해당 부서의 사원이름을 함께 출력한다.
R Programming |
%%R
emp %>%
dplyr::inner_join(dept, by = "deptno") %>%
dplyr::select(ename,dname) %>%
head(10)
Results |
# A tibble: 10 x 2
ename dname
<chr> <chr>
1 SMITH RESEARCH
2 ALLEN SALES
3 WARD SALES
4 JONES RESEARCH
5 MARTIN SALES
6 BLAKE SALES
7 CLARK ACCOUNTING
8 SCOTT RESEARCH
9 KING ACCOUNTING
10 TURNER SALES
5. R sqldf Package
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 내부조인(Inner Join)하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
R Programming |
%%R
sqldf(" select ename, dname
from emp e, dept d
where e.deptno = d.deptno;") %>% head(10)
Results |
ename dname
1 SMITH RESEARCH
2 ALLEN SALES
3 WARD SALES
4 JONES RESEARCH
5 MARTIN SALES
6 BLAKE SALES
7 CLARK ACCOUNTING
8 SCOTT RESEARCH
9 KING ACCOUNTING
10 TURNER SALES
6. Python pandasql Package
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 내부조인(Inner Join)하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
Python Programming |
ps.sqldf("select emp.ename, dept.dname \
from emp , dept \
where emp.deptno = dept.deptno").head(7)
Results |
ename | dname |
SMITH | RESEARCH |
ALLEN | SALES |
WARD | SALES |
JONES | RESEARCH |
MARTIN | SALES |
BLAKE | SALES |
CLARK | ACCOUNTING |
7. R data.table Package
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 DT syntax 를 통하여 내부조인(Inner Join)을 수행하여 부서명과 해당 부서의 사원이름을 함께 출력한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
salgrade_DT <- data.table(salgrade)
DT[dept_DT, nomatch=NULL, on = "deptno",.(ename,dname)][1:10, ]
Results |
ename dname
1: CLARK ACCOUNTING
2: KING ACCOUNTING
3: MILLER ACCOUNTING
4: SMITH RESEARCH
5: JONES RESEARCH
6: SCOTT RESEARCH
7: ADAMS RESEARCH
8: FORD RESEARCH
9: ALLEN SALES
10: WARD SALES
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 DT syntax 를 통하여 내부조인(Inner Join)을 수행하여 부서명과 해당 부서의 사원이름을 함께 출력한다. 조인 key 값(‘deptno’)을 사전에 설정하여서 별도의 Key(on=)을 지정하지 않고 조인 기능 수행.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
setkey(DT, deptno)
setkey(dept_DT, deptno)
DT[dept_DT, nomatch=NULL,.(ename,dname)][1:10, ]
Results |
ename dname
1: CLARK ACCOUNTING
2: KING ACCOUNTING
3: MILLER ACCOUNTING
4: SMITH RESEARCH
5: JONES RESEARCH
6: SCOTT RESEARCH
7: ADAMS RESEARCH
8: FORD RESEARCH
9: ALLEN SALES
10: WARD SALES
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 data.table::merge() 를 통하여 내부조인(Inner Join)을 수행하여 부서명과 해당 부서의 사원이름을 함께 출력한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
merge(DT, dept_DT,
by.x=c("deptno"),
by.y=c("deptno"),all=F)[,.(ename,dname)][1:10, ]
Results |
ename dname
1: CLARK ACCOUNTING
2: KING ACCOUNTING
3: MILLER ACCOUNTING
4: SMITH RESEARCH
5: JONES RESEARCH
6: SCOTT RESEARCH
7: ADAMS RESEARCH
8: FORD RESEARCH
9: ALLEN SALES
10: WARD SALES
8. SAS Proc SQL
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 내부조인(Inner Join)하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select ename, dname
from emp e, dept d
where e.deptno = d.deptno;;
QUIT;
PROC PRINT data=STATSAS_1(obs=3);RUN;
Results |
ename | dname |
SMITH | RESEARCH |
ALLEN | SALES |
WARD | SALES |
9. SAS Data Step
사원정보가 포함된 emp테이블과 부서 정보를 관리하는 dept 테이블을 좌우결합(Merge - Inner Join 방식)하여서 부서명과 해당 부서의 사원이름을 함께 출력한다.
SAS Programming |
%%SAS sas
PROC SORT DATA=emp OUT=EMP_1;
BY deptno;
RUN;
PROC SORT DATA=dept OUT=dept_2 NODUPKEY;
BY deptno;
RUN;
DATA STATSAS_2;
MERGE EMP_1(IN=A) dept_2(IN=B);
BY deptno;
IF A AND B THEN OUTPUT;
keep ename dname;
RUN;
PROC PRINT data=STATSAS_2(obs=3);RUN;
Results |
ename | dname |
CLARK | ACCOUNTING |
KING | ACCOUNTING |
MILLER | ACCOUNTING |
10. Python Dfply Package
Python Programming |
emp >> \
inner_join(dept, by = "deptno") >> \
select(X.ename,X.dname) >> \
head()
Results |
ename | dname |
SMITH | RESEARCH |
JONES | RESEARCH |
SCOTT | RESEARCH |
ADAMS | RESEARCH |
FORD | RESEARCH |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 전처리 방법 리스트
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) 과 Between 연산자 - 93 (0) | 2022.09.27 |
---|---|
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) - 92 (0) | 2022.09.27 |
[데이터 추출] Where 조건절을 만족하는 데이터 추출 - 90 (1) | 2022.09.26 |
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) - 89 (1) | 2022.09.26 |
[문자 함수] 문자 검색 함수 - 88 (1) | 2022.09.26 |
댓글