포스팅 목차
92. Display ename who are working in sales dept.
* 영업부서(‘SALES’) 부서에서 근무하고 있는 직원의 이름을 출력하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- 서브쿼리 예제 : 58번 / 59번
- 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=)
|
1. Oracle(오라클)
서브쿼리를 사용하여서 dept 테이블에서 영업부서(“SALES”)의 부서 번호를 선택 후 emp 테이블에서 영업부서에서 근무하는 직원의 정보를 출력한다.
Oracle Programming |
select empno, ename
from emp
where deptno=(select deptno from dept where dname='SALES');
2. Python Pandas(파이썬)
dept 테이블에서 영업 부서(dname = “SALES”)의 부서 코드(“deptno”)를 검색 후 emp 테이블에서 영업 부서(‘10’)에서 근무하는 직원의 정보를 출력한다.
Python Programming |
emp[emp['deptno']== (dept[dept['dname'] == 'SALES']['deptno'].iloc[0]) ][['empno', 'ename']]
Results |
empno | ename |
7499 | ALLEN |
7521 | WARD |
7654 | MARTIN |
7698 | BLAKE |
7844 | TURNER |
7900 | JAMES |
3. R Programming (R Package)
dept 테이블에서 영업 부서(dname = “SALES”)의 부서 코드(“deptno”)를 검색 후 emp 테이블에서 영업 부서(‘10’)에서 근무하는 직원의 정보를 출력한다.
R Programming |
%%R
emp[emp$deptno == dept[dept$dname == 'SALES', c("deptno") ]$deptno, c("empno","ename")]
Results |
# A tibble: 6 x 2
empno ename
<dbl> <chr>
1 7499 ALLEN
2 7521 WARD
3 7654 MARTIN
4 7698 BLAKE
5 7844 TURNER
6 7900 JAMES
4. R Dplyr Package
dept 테이블에서 영업 부서(dname = “SALES”)의 부서 코드(“deptno”)를 검색 후 emp 테이블에서 영업 부서(‘10’)에서 근무하는 직원의 정보를 출력한다.
filter 함수를 사용하여서 emp 테이블의 부서번호(deptno)가 dept 테이블에서 선택된 부서코드에 존재하는지 검색하여 조건에 만족하는 관측치를 선택한다.
R Programming |
%%R
emp %>% dplyr::filter( deptno == ( dept %>%
dplyr::filter(dname == "SALES") %>%
dplyr::select(deptno) %>%
pull(deptno)) ) %>%
dplyr::select(empno,ename)
Results |
# A tibble: 6 x 2
empno ename
<dbl> <chr>
1 7499 ALLEN
2 7521 WARD
3 7654 MARTIN
4 7698 BLAKE
5 7844 TURNER
6 7900 JAMES
5. R sqldf Package
서브쿼리로 dept 테이블에서 영업부서(“SALES”)의 부서 번호를 선택 후 emp 테이블에서 영업부서에서 근무하는 직원의 정보를 출력한다.
R Programming |
%%R
sqldf("select empno, ename
from emp
where deptno=(select deptno from dept where dname='SALES');")
Results |
empno ename
1 7499 ALLEN
2 7521 WARD
3 7654 MARTIN
4 7698 BLAKE
5 7844 TURNER
6 7900 JAMES
6. Python pandasql Package
Python Programming |
ps.sqldf("select empno, ename \
from emp \
where deptno=(select deptno from dept where dname='SALES');")
Results |
empno | ename |
7499 | ALLEN |
7521 | WARD |
7654 | MARTIN |
7698 | BLAKE |
7844 | TURNER |
7900 | JAMES |
7. R data.table Package
dept 테이블에서 영업 부서(dname = “SALES”)의 부서 코드(“deptno”)를 검색 후 emp 테이블에서 영업 부서(‘10’)에서 근무하는 직원의 정보를 출력한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
salgrade_DT <- data.table(salgrade)
# setkey(DT, deptno)
# setkey(dept_DT, deptno)
DT[DT[,deptno == ( dept_DT[dname == "SALES", .(deptno)]$deptno )], .(empno, ename)]
Results |
empno ename
1: 7499 ALLEN
2: 7521 WARD
3: 7654 MARTIN
4: 7698 BLAKE
5: 7844 TURNER
6: 7900 JAMES
8. SAS Proc SQL
서브쿼리를 사용하여서 dept 테이블에서 영업부서(“SALES”)의 부서 번호를 선택 후 emp 테이블에서 영업부서에서 근무하는 직원의 정보를 출력한다.
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select empno, ename
from emp
where deptno=(select deptno from dept where dname='SALES');
QUIT;
PROC PRINT;RUN;
Results |
empno | ename |
7499 | ALLEN |
7521 | WARD |
7654 | MARTIN |
7698 | BLAKE |
7844 | TURNER |
7900 | JAMES |
9. SAS Data Step
SAS Programming |
%%SAS sas
PROC SORT DATA=emp OUT=EMP_1;
BY deptno;
RUN;
PROC SORT DATA=dept OUT=dept_2 NODUPKEY;
BY deptno;
where dname='SALES';
RUN;
DATA STATSAS_2;
MERGE EMP_1(IN=A) dept_2(IN=B);
BY deptno;
IF A AND B THEN OUTPUT;
keep empno ename;
RUN;
PROC PRINT;RUN;
Results |
empno | ename |
7499 | ALLEN |
7521 | WARD |
7654 | MARTIN |
7698 | BLAKE |
7844 | TURNER |
7900 | JAMES |
10. Python Dfply Package
Python Programming |
# [참고] 함수 사용. (52번 예제 참고)
@pipe
def pull_fun(df, column=-1):
return df.loc[:, column].item()
emp >> filter_by (X.deptno == ( dept >> filter_by(X.dname == "SALES") >> \
select(X.deptno) >> \
pull_fun("deptno") ) ) >> \
select(X.empno, X.ename)
Results |
empno | ename |
7499 | ALLEN |
7521 | WARD |
7654 | MARTIN |
7698 | BLAKE |
7844 | TURNER |
7900 | JAMES |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 추출] 비등가 내부 조인(Inner Join)을 만족하는 데이터 추출 - 94 (0) | 2022.09.27 |
---|---|
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) 과 Between 연산자 - 93 (0) | 2022.09.27 |
[데이터 추출] 내부 조인(Inner Join)을 만족하는 데이터 추출 - 91 (0) | 2022.09.27 |
[데이터 추출] Where 조건절을 만족하는 데이터 추출 - 90 (1) | 2022.09.26 |
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) - 89 (1) | 2022.09.26 |
댓글