포스팅 목차
27. Display the total salary being paid to all employees.
* 모든 직원에 지급되는 총 급여를 계산하라.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- [집계함수] 수치형 데이터 합계 계산, 결측치 대체
|
1. 오라클(Oracle)
- 개별 직원의 급여와 수수료를 더하여 해당 직원의 총 급여를 계산한다.
Oracle Programming |
select sum(sal)+sum(nvl(comm,0)) as sal_tot,
sum(sal + nvl(comm,0)) as sal_tot_1
from emp;
2. 파이썬(Pandas)
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, 결측치 값을 사전에 0으로 변경 후 계산한다.
Python Programming |
sum(emp["sal"]) + sum(emp["comm"].replace(np.nan,0))
Results |
31225.0
Python Programming |
sum(emp["sal"]) + sum(emp["comm"])
Results |
nan
3. R Programming (R Package)
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, ifelse구문을 사용하여서 결측치 값을 사전에 0으로 변경 후 계산한다.
R Programming |
%%R
sum(emp$sal) + sum(ifelse(is.na(emp$comm),0,emp$comm))
Results |
[1] 31225
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, replace_na구문을 사용하여서 결측치 값을 사전에 0으로 변경 후 계산한다.
R Programming |
%%R
sum(emp$sal) + sum(replace_na(emp$comm,0))
Results |
[1] 31225
4. R Dplyr Package
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, ifelse구문을 사용하여서 결측치 값을 사전에 0으로 변경 후 계산한다.
R Programming |
%%R
emp %>% dplyr::summarise(tot_sal = sum(sal+ifelse(is.na(comm),0,comm)))
Results |
# A tibble: 1 x 1
tot_sal
<dbl>
1 31225
5. R sqldf Package
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, 결측치 값을 사전에 0으로 변경 후 계산한다.
R Programming |
%%R
sqldf("select sum(sal)+sum(ifnull(comm,0)) tot_sal from emp")
Results |
tot_sal
1 31225
6. Python pandasql Package
Python Programming |
ps.sqldf("select sum(sal)+sum(ifnull(comm,0)) tot_sal from emp")
Results |
tot_sal | |
0 | 31225.0 |
7. R data.table Package
개별 직원의 급여와 수수료를 더하여 총 급여를 계산한다. 결측치(nan)가 포함된 연산은 nan을 반환하기 때문에, ifelse구문을 사용하여서 결측치 값을 사전에 0으로 변경 후 계산한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
DT[, .(tot_sal = sum(sal, na.rm = TRUE) + sum(ifelse(is.na(comm), 0, comm), na.rm = TRUE))]
Results |
tot_sal
1: 31225
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
DT[, .(tot_sal = sum(sal + ifelse(is.na(comm), 0, comm)))]
Results |
tot_sal
1: 31225
8. SAS Proc SQL
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,
sum(sal + coalesce(comm,0)) AS tot_sal_3,
sum(sal + ifn(comm = .,0,comm)) AS tot_sal_4
from emp;
QUIT;
PROC PRINT;RUN;
Results |
OBS | tot_sal_1 | tot_sal_2 |
1 | 31225 | 31225 |
9. SAS Data Step
SAS Programming |
%%SAS sas
DATA STATSAS_2;
SET EMP;
tot_sal_1 = SAL + coalesce(comm,0);
tot_sal_2 = SAL + ifn(comm = .,0,comm);
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 | 31225 | 31225 |
10. Python Dfply Package
Python Programming |
emp >> summarize( tot_sal = ( X.sal + X.comm.replace(np.nan,0) ).sum() )
Results |
tot_sal | |
0 | 31225.0 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
댓글