본문 바로가기
통계프로그램 비교 시리즈/프로그래밍비교(Oracle,Python,R,SAS)

[기초 통계량 - 그룹별 총합계(Total) 계산] 그룹별 합계 집계 - 46 (오라클 SQL, R, Python, SAS)

by 기서무나구물 2021. 8. 15.

포스팅 목차

     

    46. Display the various jobs and total salary for each job.

     

    * 개별 직무 속한 직원들의 총 급여를 계산하시오.


    • Oracle : group by, sum()
    • 파이썬 Pandas : groupby(), describe(), reset_index(), agg()
    • R 프로그래밍 : aggregate(), list, sum, 사용자 정의 함수(function)
    • R Dplyr Package : dplyr::group_by(), dplyr::summarise(), sum()
    • R sqldf Package : group by, sum()
    • Python pandasql Package : group by, sum()
    • R data.table Package a: sum(), list, keyby=
    • SAS Proc SQL : group by, sum()
    • SAS Data Step : proc summary, sum=, first., last.
    • Python Dfply Package : group_by(), summarize(), .sum()
    • 파이썬 Base 프로그래밍 :

     


    1. Oracle(오라클)

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    Oracle Programming
    select job, 
           sum(sal) as sal_sum
    from   emp 
    group 
       by  job;

     

     


    2. Python Pandas(파이썬)

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    Python Programming
    emp.groupby(['job'])['sal'].agg(['sum']).reset_index()

     

    Results
      job sum
    0 ANALYST 6000
    1 CLERK 4150
    2 MANAGER 8275
    3 PRESIDENT 5000
    4 SALESMAN 5600

     

     


    3. R Programming (R Package)

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    R Programming
    %%R
    
    aggregate(sal ~ job, data = emp, FUN = function(x) c(sum_sal = sum(x) ) )

     

    Results
            job  sal
    1   ANALYST 6000
    2     CLERK 4150
    3   MANAGER 8275
    4 PRESIDENT 5000
    5  SALESMAN 5600

     

     


    4. R Dplyr Package

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    R Programming
    %%R
    
    emp %>%
      group_by(job) %>% summarise( sum_sal=sum(sal) )

     

    Results
    `summarise()` ungrouping output (override with `.groups` argument)
    # A tibble: 5 x 2
      job       sum_sal
      <chr>       <dbl>
    1 ANALYST      6000
    2 CLERK        4150
    3 MANAGER      8275
    4 PRESIDENT    5000
    5 SALESMAN     5600

     

     


    5. R sqldf Package

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    R Programming
    %%R
    sqldf("select job, sum(sal) tot_sal from emp group by job")

     

    Results
            job tot_sal
    1   ANALYST    6000
    2     CLERK    4150
    3   MANAGER    8275
    4 PRESIDENT    5000
    5  SALESMAN    5600

     

     


    6. Python pandasql Package

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    Python Programming
    ps.sqldf("select job, sum(sal) tot_sal from emp group by job")

     

    Results
      job tot_sal
    0 ANALYST 6000
    1 CLERK 4150
    2 MANAGER 8275
    3 PRESIDENT 5000
    4 SALESMAN 5600

     

     


    7. R data.table Package

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    R Programming
    %%R
    
    DT <- data.table(emp)
    
    DT[, .('sum_sal' = sum(sal, na.rm = TRUE)), keyby = .(job)]

     

    Results
             job sum_sal
    1:   ANALYST    6000
    2:     CLERK    4150
    3:   MANAGER    8275
    4: PRESIDENT    5000
    5:  SALESMAN    5600

     

     


    8. SAS Proc SQL

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    SAS Programming
    %%SAS sas
    
    PROC SQL;
      CREATE TABLE STATSAS_1 AS
        select job, sum(sal) AS SAL_SUM
        from   emp 
        group 
           by  1;
    QUIT;
    PROC PRINT;RUN;

     

    Results
    OBS job SAL_SUM
    1 ANALYST 6000
    2 CLERK 4150
    3 MANAGER 8275
    4 PRESIDEN 5000
    5 SALESMAN 5600

     

     


    9. SAS Data Step

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    SAS Programming
    %%SAS sas
    
    PROC SUMMARY DATA=EMP NWAY;
         CLASS job;
         VAR   SAL;
         OUTPUT OUT=STATSAS_2(DROP=_:) sum=SAL_SUM;
    RUN;
    PROC PRINT;RUN;

     

    Results
    OBS job SAL_SUM
    1 ANALYST 6000
    2 CLERK 4150
    3 MANAGER 8275
    4 PRESIDEN 5000
    5 SALESMAN 5600

     


     

    SAS Programming
    %%SAS sas
    
    
    PROC SORT DATA=EMP OUT=EMP_1;
         BY job;
    RUN;
    
    DATA STATSAS_3;
     SET EMP_1;
         BY job;
    
         IF FIRST.job THEN SAL_SUM = SAL;
         ELSE SAL_SUM + SAL;
    
         IF LAST.job THEN OUTPUT;
         KEEP DEPTNO SAL_SUM;
    RUN;
    PROC PRINT;RUN;

     

    Results
    OBS deptno SAL_SUM
    1 20 6000
    2 10 4150
    3 10 8275
    4 10 5000
    5 30 5600

     

     


    10. Python Dfply Package

    개별 직무 속한 직원들의 총 급여 합계를 계산한다.

    Python Programming
    emp >> group_by('job') >> summarize( sal_tot = X.sal.sum() )

     

    Results
      job sal_tot
    0 ANALYST 6000
    1 CLERK 4150
    2 MANAGER 8275
    3 PRESIDENT 5000
    4 SALESMAN 5600

     

     


    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE]   SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트

     

    반응형

    댓글