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

[관측치 선택] 복수의 조건문을 만족하는 관측치 출력 - 8

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

포스팅 목차

     

    8. Display the names of all employees working as clerks and drawing a salary more than 3000.

     

    * 사무원(CLERK)으로 근무하고 있는 사원 중에서 급여가 1000 이상인 사원의 이름을 출력하시오.


    • Oracle : where 구문
    • 파이썬 Pandas : 행 인덱싱, query 구문
    • R 프로그래밍 : 행 인덱싱, which 구문, subset 구문
    • R Dplyr Package : filter 구문
    • R sqldf Package : where 구문
    • Python pandasql Package : where 구문
    • R data.table Package : 행 인덱싱
    • SAS Proc SQL : where 구문
    • SAS Data Step : where 구문, IF 구문
    • Python Dfply Package : filter_by 구문, mask 구문
    • 파이썬 Base 프로그래밍 :

     


    1. 오라클(Oracle)

     

    Oracle Programming
    select ename 
    from   emp 
    where  job= 'CLERK' 
      and  sal>1000;

     


    2. 파이썬(Pandas)

    emp 테이블에서 직책이 사무원(CLERK)이고, 급여가 1000 초과하는 사원을 선택한다.

    Python Programming
    emp[ (emp['job'] == "CLERK") & (emp["sal"] > 1000) ][['ename']]

     

    Results
      ename
    10 ADAMS
    13 MILLER

     


     

    emp.loc[(emp.job == "CLERK") & (emp.sal >1000) , ["ename"]]

     

    Results
      ename
    10 ADAMS
    13 MILLER

     


    Query구문을 사용하여서 emp 테이블에서 직책이 사무원(CLERK)으로 근무하고 급여가 1000 초과하는 사원을 선택한다.

    Python Programming
    emp.query('job == "CLERK" & sal > 1000')[["ename"]]

     

    Results
      ename
    10 ADAMS
    13 MILLER

     


    3. R Programming (R Package)

    emp 테이블에서 직책이 사무원(CLERK)으로 근무하고 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    emp[emp$job == "CLERK" & emp$sal > 1000 , c("ename") ]

     

    Results
    # A tibble: 2 x 1
      ename 
      <chr> 
    1 ADAMS 
    2 MILLER

     


    Which구문을 사용하여서 emp 테이블에서 직책이 사무원(CLERK)으로 근무하고 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    emp[which(emp$job == "CLERK" & emp$sal > 1000), c("ename") ]

     

    Results
    # A tibble: 2 x 1
      ename 
      <chr> 
    1 ADAMS 
    2 MILLER

     


    Subset 구문을 사용하여서 emp 테이블에서 직책이 사무원(CLERK)으로 근무하고 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    subset(emp,subset= (job == "CLERK" & sal >1000) , select=ename)

     

    Results
    # A tibble: 2 x 1
      ename 
      <chr> 
    1 ADAMS 
    2 MILLER

     


    4. R Dplyr Package

    Filter 구문을 사용하여서 emp 테이블에서 직책이 사무원(CLERK)으로 근무하고 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    emp %>% filter(job == "CLERK" & sal > 1000) %>% dplyr::select(ename)

     

    Results
    # A tibble: 2 x 1
      ename 
      <chr> 
    1 ADAMS 
    2 MILLER

     


    5. R sqldf Package

    emp 테이블에서 직책이 사무원(CLERK)이고, 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    
    require(sqldf)
    sqldf("select ename from emp where job= 'CLERK' and sal>1000")

     

    Results
       ename
    1  ADAMS
    2 MILLER

     


    6. Python pandasql Package

    emp 테이블에서 직책이 사무원(CLERK)이고, 급여가 1000 초과하는 사원을 선택한다.

    Python Programming
    ps.sqldf("select ename from emp where job= 'CLERK' and sal>1000")

     

    Results
      ename
    0 ADAMS
    1 MILLER

     


    7. R data.table Package

    emp 테이블에서 직책이 사무원(CLERK)이고, 급여가 1000 초과하는 사원을 선택한다.

    R Programming
    %%R
    
    DT          <- data.table(emp)
    dept_DT     <- data.table(dept)
    
    DT[ job == "CLERK" & sal > 1000 , .( ename )]

     

    Results
        ename
    1:  ADAMS
    2: MILLER

     


    8. SAS Proc SQL

     

    SAS Programming
    %%SAS sas
    
    PROC SQL;
      create table statsas_1 as
        select ENAME
        from   emp
        where job = 'CLERK' 
          and sal > 1000;
    QUIT;
    PROC PRINT;RUN;

     

    Results
    OBS ename
    1 ADAMS
    2 MILLER

     


    9. SAS Data Step

     

    SAS Programming
    %%SAS sas
    
    DATA statsas_2;
     SET EMP;
         keep ename;
         where job = 'CLERK' 
          and sal > 1000;
    RUN;
    PROC PRINT;RUN;

     

    Results
    OBS ename
    1 ADAMS
    2 MILLER

     


    10. Python Dfply Package

     

    Python Programming
    emp >> filter_by(X.job == "CLERK" , X.sal > 1000) >> select(X.ename)

     

    Results
      ename
    10 ADAMS
    13 MILLER

     


     

    Python Programming
    emp >> mask(X.job == "CLERK" , X.sal > 1000) >> select(X.ename)

     

    Results
      ename
    10 ADAMS
    13 MILLER

     


     

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

     

    반응형

    댓글