포스팅 목차
35. Display the total salary drawn by analyst working in dept no 30.
* 부서번호 30에 근무하는 직원에게 지급되는 총 급여를 계산하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- [집계함수] 조건절을 만족하는 수치형 데이터 합계 계산, 결측치 대체
|
1. 오라클(Oracle)
- 부서번호 30에 근무하는 직원에게 지급되는 총 급여(수수료 포함)를 계산
Oracle Programming |
select sum(sal)+sum(nvl(comm,0)) as salary_1,
sum(sal + nvl(comm,0)) as salary_2
from emp
where deptno=30;
2. 파이썬(Pandas)
- replace()함수를 사용하여서 수수료의 결측값을 0으로 변경 후 급여와 수수료를 합산한다.
Python Programming |
sum(emp[emp['deptno'] == 30]['sal']) + sum(emp[emp['deptno'] == 30]['comm'].replace(np.nan,0))
Results |
11600.0
3. R Programming (R Package)
- 부서번호 30에 근무하는 직원을 선택 후 ifelse()함수를 사용하여서 수수료의 결측값을 0으로 변경 후 급여와 수수료를 합산한다.
R Programming |
%%R
sum(emp[emp$deptno == 30 , c("sal") ]) + sum( ifelse(emp$deptno != 30 | is.na(emp$comm),0,emp$comm) )
Results |
[1] 11600
- replace_na()함수를 사용하여서 수수료의 결측값을 0으로 변경 할 수 있다.
R Programming |
%%R
replace_na(emp$comm,0)
Results |
[1] 0 300 500 0 1400 0 0 0 0 0 0 0 0 0
4. R Dplyr Package
부서번호 30에 근무하는 직원을 선택 후 ifelse()함수를 사용하여서 수수료의 결측값을 0으로 변경 후 급여와 수수료를 합산한다.
R Programming |
%%R
emp %>% filter(deptno == 30) %>% dplyr::summarise(tot_sal = sum(sal+ifelse(is.na(comm),0,comm)))
Results |
# A tibble: 1 x 1
tot_sal
<dbl>
1 11600
5. R sqldf Package
ifnull()함수를 사용하여서 수수료의 결측값을 0으로 변경 후 급여와 수수료를 합산한다.
R Programming |
%%R
sqldf("select sum(sal)+sum(ifnull(comm,0)) Tot_sal from emp where deptno=30")
Results |
Tot_sal
1 11600
6. Python pandasql Package
- Where 구문과 sum() 함수
Python Programming |
ps.sqldf("select sum(sal)+sum(ifnull(comm,0)) Tot_sal from emp where deptno=30")
Results |
Tot_sal | |
0 | 11600.0 |
7. R data.table Package
부서번호 30에 근무하는 직원을 선택 후 ifelse()함수를 사용하여서 수수료의 결측값을 0으로 변경 후 급여와 수수료를 합산한다.
R Programming |
%%R
DT <- data.table(emp)
DT[deptno == 30, .(Tot_sal = sum(sal, na.rm = TRUE) + sum(ifelse(is.na(comm), 0, comm), na.rm = TRUE))]
Results |
Tot_sal
1: 11600
- ifelse 구문과 sum() 함수
R Programming |
%%R
DT[deptno == 30, .(tot_sal = sum(sal + ifelse(is.na(comm), 0, comm)))]
Results |
tot_sal
1: 11600
8. SAS Proc SQL
- Where 구문과 sum() 함수
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select sum(sal)+sum(coalesce(comm,0)) AS tot_sal_1,
sum(sal)+sum(ifn(comm = .,0,comm)) AS tot_sal_2
from emp
where deptno=30;
QUIT;
PROC PRINT;RUN;
Results |
OBS | tot_sal_1 | tot_sal_2 |
1 | 11600 | 11600 |
9. SAS Data Step
- Where 구문, Proc summary 프로시져와 sum()
SAS Programming |
%%SAS sas
DATA STATSAS_2;
SET EMP;
tot_sal_1 = SAL + coalesce(comm,0);
tot_sal_2 = SAL + ifn(comm = .,0,comm);
where deptno=30;
RUN;
PROC SUMMARY DATA=STATSAS_2;
VAR tot_sal_1 tot_sal_2;
OUTPUT OUT=STATSAS_21(DROP=_:) SUM=;
RUN;
PROC PRINT;RUN;
Results |
OBS | tot_sal_1 | tot_sal_2 |
1 | 11600 | 11600 |
10. Python Dfply Package
filter_by, summarize와 sum()
Python Programming |
emp >> filter_by( X.deptno == 30 ) >> summarize( tot_sal = ( X.sal + X.comm.replace(np.nan,0) ).sum() )
Results |
tot_sal | |
0 | 11600.0 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
반응형
댓글