포스팅 목차
10. Display names of employees who do not earn any commission.
- 커미션을 받지 않는 직원의 이름을 출력하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- [Or 연산자] Null 데이터 선택과 Or 연산자
|
1. 오라클(Oracle)
Oracle Programming |
Select empno, ename
from emp
where comm is null or comm=0;
2. 파이썬(Pandas)
Emp테이블에서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
Python Programming |
emp[ (emp['comm'].isnull()) | (emp['comm'] == 0 )][["empno","ename"]]
Results |
empno | ename | |
0 | 7369 | SMITH |
3 | 7566 | JONES |
5 | 7698 | BLAKE |
6 | 7782 | CLARK |
7 | 7788 | SCOTT |
8 | 7839 | KING |
9 | 7844 | TURNER |
10 | 7876 | ADAMS |
11 | 7900 | JAMES |
12 | 7902 | FORD |
13 | 7934 | MILLER |
Python Programming |
emp.loc[(emp.comm.isnull()) | (emp.comm == 0) , ["empno","ename"]]
Results |
empno | ename | |
0 | 7369 | SMITH |
3 | 7566 | JONES |
5 | 7698 | BLAKE |
6 | 7782 | CLARK |
7 | 7788 | SCOTT |
8 | 7839 | KING |
9 | 7844 | TURNER |
10 | 7876 | ADAMS |
11 | 7900 | JAMES |
12 | 7902 | FORD |
13 | 7934 | MILLER |
Emp테이블에서 query구문을 사용하여서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
Python Programming |
# query 구문에서 isnull() / notnull() 구문 사용 : python engine instead of numexpr engin
emp.query('comm.isnull() | comm == 0', engine='python')[["empno","ename"]]
Results |
empno | ename | |
0 | 7369 | SMITH |
3 | 7566 | JONES |
5 | 7698 | BLAKE |
6 | 7782 | CLARK |
7 | 7788 | SCOTT |
8 | 7839 | KING |
9 | 7844 | TURNER |
10 | 7876 | ADAMS |
11 | 7900 | JAMES |
12 | 7902 | FORD |
13 | 7934 | MILLER |
3. R Programming (R Package)
Emp테이블에서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
R Programming |
%%R
emp[is.na(emp$comm) | emp$comm == 0 , c("empno","ename") ]
Results |
# A tibble: 11 x 2
empno ename
<dbl> <chr>
1 7369 SMITH
2 7566 JONES
3 7698 BLAKE
4 7782 CLARK
5 7788 SCOTT
6 7839 KING
7 7844 TURNER
8 7876 ADAMS
9 7900 JAMES
10 7902 FORD
11 7934 MILLER
Emp테이블에서 which구문을 사용하여서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
R Programming |
%%R
emp[which(is.na(emp$comm) | emp$comm == 0), c("empno","ename") ]
Results |
# A tibble: 11 x 2
empno ename
<dbl> <chr>
1 7369 SMITH
2 7566 JONES
3 7698 BLAKE
4 7782 CLARK
5 7788 SCOTT
6 7839 KING
7 7844 TURNER
8 7876 ADAMS
9 7900 JAMES
10 7902 FORD
11 7934 MILLER
4. R Dplyr Package
Emp테이블에서 filter 구문을 사용하여서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
R Programming |
%%R
emp %>% filter(is.na(comm) | comm == 0 ) %>% dplyr::select(empno,ename)
Results |
# A tibble: 11 x 2
empno ename
<dbl> <chr>
1 7369 SMITH
2 7566 JONES
3 7698 BLAKE
4 7782 CLARK
5 7788 SCOTT
6 7839 KING
7 7844 TURNER
8 7876 ADAMS
9 7900 JAMES
10 7902 FORD
11 7934 MILLER
5. R sqldf Package
Emp테이블에서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
R Programming |
%%R
require(sqldf)
sqldf("Select empno, ename from emp where comm is null or comm=0")
Results |
empno ename
1 7369 SMITH
2 7566 JONES
3 7698 BLAKE
4 7782 CLARK
5 7788 SCOTT
6 7839 KING
7 7844 TURNER
8 7876 ADAMS
9 7900 JAMES
10 7902 FORD
11 7934 MILLER
6. Python pandasql Package
Emp테이블에서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
Python Programming |
ps.sqldf("Select empno, ename from emp where comm is null or comm=0")
Results |
empno | ename | |
0 | 7369 | SMITH |
1 | 7566 | JONES |
2 | 7698 | BLAKE |
3 | 7782 | CLARK |
4 | 7788 | SCOTT |
5 | 7839 | KING |
6 | 7844 | TURNER |
7 | 7876 | ADAMS |
8 | 7900 | JAMES |
9 | 7902 | FORD |
10 | 7934 | MILLER |
7. R data.table Package
Emp테이블(DT)에서 comm 값이 존재하지 않거나(Null) 0인 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
DT[ is.na(comm) | comm >0 , .( empno, ename )]
Results |
empno ename
1: 7369 SMITH
2: 7499 ALLEN
3: 7521 WARD
4: 7566 JONES
5: 7654 MARTIN
6: 7698 BLAKE
7: 7782 CLARK
8: 7788 SCOTT
9: 7839 KING
10: 7876 ADAMS
11: 7900 JAMES
12: 7902 FORD
13: 7934 MILLER
8. SAS Proc SQL
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
SELECT EMPNO,ENAME,COMM
FROM EMP
WHERE COMM = . OR COMM=0;
QUIT;
PROC PRINT;RUN;
Results |
OBS | empno | ename | comm |
1 | 7369 | SMITH | . |
2 | 7566 | JONES | . |
3 | 7698 | BLAKE | . |
4 | 7782 | CLARK | . |
5 | 7788 | SCOTT | . |
6 | 7839 | KING | . |
7 | 7844 | TURNER | 0 |
8 | 7876 | ADAMS | . |
9 | 7900 | JAMES | . |
10 | 7902 | FORD | . |
11 | 7934 | MILLER | . |
9. SAS Data Step
SAS Programming |
%%SAS sas
DATA STATSAS_2;
SET EMP;
KEEP EMPNO ENAME COMM;
WHERE COMM = . OR COMM=0;
RUN;
PROC PRINT;RUN;
Results |
OBS | empno | ename | comm |
1 | 7369 | SMITH | . |
2 | 7566 | JONES | . |
3 | 7698 | BLAKE | . |
4 | 7782 | CLARK | . |
5 | 7788 | SCOTT | . |
6 | 7839 | KING | . |
7 | 7844 | TURNER | 0 |
8 | 7876 | ADAMS | . |
9 | 7900 | JAMES | . |
10 | 7902 | FORD | . |
11 | 7934 | MILLER | . |
10. Python Dfply Package
Or 연산자 좌우조건에 괄호()로 넣어줘야 에러 발생 안 함.
Python Programming |
emp >> filter_by( (X.comm.isnull()) | (X.comm == 0) ) >> select(X.empno, X.ename) >> head(5)
Results |
empno | ename | |
0 | 7369 | SMITH |
3 | 7566 | JONES |
5 | 7698 | BLAKE |
6 | 7782 | CLARK |
7 | 7788 | SCOTT |
Python Programming |
emp >> mask( (X.comm.isnull()) | (X.comm == 0) ) >> select(X.empno, X.ename) >> head(5)
Results |
empno | ename | |
0 | 7369 | SMITH |
3 | 7566 | JONES |
5 | 7698 | BLAKE |
6 | 7782 | CLARK |
7 | 7788 | SCOTT |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 선택 - 날자 기간 차이] 근속 기간 계산 후 데이터 필터 - 12 (오라클 SQL, R, Python, SAS) (0) | 2021.08.05 |
---|---|
[데이터 선택 - AND & OR 연산자] 복수의 OR 연산자와 AND 연산자 - 11 (오라클 SQL, R, Python, SAS) (0) | 2021.08.05 |
[데이터 조건 선택 - NOT NULL] 조건문을 만족하는 관측치 선택 후 특정 변수 출력 - 9 (0) | 2021.08.04 |
[관측치 선택] 복수의 조건문을 만족하는 관측치 출력 - 8 (0) | 2021.08.04 |
[관측치 선택] 조건문을 만족하는 관측치 출력 - 7 (0) | 2021.08.04 |
댓글