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

[데이터 추출] Where 조건절을 만족하는 데이터 추출 - 90

by 기서무나구물 2022. 9. 26.

포스팅 목차

     

    90. Display those employees whose salary is more than 3000 after giving 20% increment.

     

    * 20% 인상된 급여가 3000 이상인 직원의 정보를 출력하시오.


    • Oracle : where 구문
    • 파이썬 Pandas : 비교 구문
    • R 프로그래밍 : 비교 구문
    • R Dplyr Package : dplyr::filter()
    • R sqldf Package : where 구문
    • Python pandasql Package : where 구문
    • R data.table Package : 비교 구문
    • SAS Proc SQL : 비교 구문
    • SAS Data Step : 비교 구문
    • Python Dfply Package : filter_by()
    • 파이썬 Base 프로그래밍 :

     


    1. Oracle(오라클)

    급여(‘sal’)를 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    Oracle Programming
    select * 
    from   emp 
    where  sal*120/100 >= 3000;

     


    Oracle Programming
    select * 
    from   emp 
    where  sal + sal*20/100 >= 3000;

     


    2. Python Pandas(파이썬)

    현재 급여(‘sal’)에서 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    Python Programming
    emp[ ( emp['sal'] *120/100 ) >= 3000]
     

    Results
    empno ename job mgr hiredate sal comm deptno
    7566 JONES MANAGER 7839.0 1981/04/02 2975 NaN 20
    7698 BLAKE MANAGER 7839.0 1981/03/01 2850 NaN 30
    7788 SCOTT ANALYST 7566.0 1982/12/09 3000 NaN 20
    7839 KING PRESIDENT NaN 1981/11/17 5000 NaN 10
    7902 FORD ANALYST 7566.0 1981/12/03 3000 NaN 20

     


    3. R Programming (R Package)

    현재 급여(‘sal’)에서 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    R Programming
    %%R
    
    emp[ emp$sal*120/100 >= 3000 ,]

     

     

    Results
    # A tibble: 5 x 8
      empno ename job         mgr hiredate     sal  comm deptno
      <dbl> <chr> <chr>     <dbl> <date>     <dbl> <dbl>  <dbl>
    1  7566 JONES MANAGER    7839 1981-04-02  2975    NA     20
    2  7698 BLAKE MANAGER    7839 1981-03-01  2850    NA     30
    3  7788 SCOTT ANALYST    7566 1982-12-09  3000    NA     20
    4  7839 KING  PRESIDENT    NA 1981-11-17  5000    NA     10
    5  7902 FORD  ANALYST    7566 1981-12-03  3000    NA     20

     

     


    4. R Dplyr Package

    현재 급여(‘sal’)에서 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    R Programming
    %%R
    
    emp %>%
      dplyr::filter( sal*120/100 >= 3000 )

     

    Results
    # A tibble: 5 x 8
      empno ename job         mgr hiredate     sal  comm deptno
      <dbl> <chr> <chr>     <dbl> <date>     <dbl> <dbl>  <dbl>
    1  7566 JONES MANAGER    7839 1981-04-02  2975    NA     20
    2  7698 BLAKE MANAGER    7839 1981-03-01  2850    NA     30
    3  7788 SCOTT ANALYST    7566 1982-12-09  3000    NA     20
    4  7839 KING  PRESIDENT    NA 1981-11-17  5000    NA     10
    5  7902 FORD  ANALYST    7566 1981-12-03  3000    NA     20

     


    5. R sqldf Package

    현재 급여(‘sal’)에서 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    R Programming
    %%R
    
    sqldf(" select * 
            from   emp 
            where  sal*120/100 >= 3000;")

     

    Results
      empno ename       job  mgr   hiredate  sal comm deptno
    1  7566 JONES   MANAGER 7839 1981-04-02 2975   NA     20
    2  7698 BLAKE   MANAGER 7839 1981-03-01 2850   NA     30
    3  7788 SCOTT   ANALYST 7566 1982-12-09 3000   NA     20
    4  7839  KING PRESIDENT   NA 1981-11-17 5000   NA     10
    5  7902  FORD   ANALYST 7566 1981-12-03 3000   NA     20

     


    6. Python pandasql Package

    급여(‘sal’)를 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    Python Programming
    ps.sqldf("select * from emp where sal*120/100 >= 3000;")

     

     

    Results
    empno ename job mgr hiredate sal comm deptno
    7566 JONES MANAGER 7839.0 1981/04/02 2975 None 20
    7698 BLAKE MANAGER 7839.0 1981/03/01 2850 None 30
    7788 SCOTT ANALYST 7566.0 1982/12/09 3000 None 20
    7839 KING PRESIDENT NaN 1981/11/17 5000 None 10
    7902 FORD ANALYST 7566.0 1981/12/03 3000 None 20

     


    7. R data.table Package

    현재 급여(‘sal’)에서 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    R Programming
    %%R
    DT          <- data.table(emp)
    dept_DT     <- data.table(dept)
    salgrade_DT <- data.table(salgrade)
    
    DT[ (sal*120/100) >= 3000  , ]

     

     

    Results
       empno ename       job  mgr   hiredate  sal comm deptno
    1:  7566 JONES   MANAGER 7839 1981-04-02 2975   NA     20
    2:  7698 BLAKE   MANAGER 7839 1981-03-01 2850   NA     30
    3:  7788 SCOTT   ANALYST 7566 1982-12-09 3000   NA     20
    4:  7839  KING PRESIDENT   NA 1981-11-17 5000   NA     10
    5:  7902  FORD   ANALYST 7566 1981-12-03 3000   NA     20

     

     


    8. SAS Proc SQL

    급여(‘sal’)를 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    SAS Programming
    %%SAS sas
    
    PROC SQL;
      CREATE TABLE STATSAS_1 AS
        select * 
        from   emp 
        where  sal*120/100 >= 3000;
    QUIT;
    PROC PRINT;RUN;

     

     

    Results
    empno ename job mgr hiredate sal comm deptno
    7566 JONES MANAGER 7839 1981-04-02 2975 . 20
    7698 BLAKE MANAGER 7839 1981-03-01 2850 . 30
    7788 SCOTT ANALYST 7566 1982-12-09 3000 . 20
    7839 KING PRESIDEN . 1981-11-17 5000 . 10
    7902 FORD ANALYST 7566 1981-12-03 3000 . 20

     

     


    9. SAS Data Step

    급여(‘sal’)를 20% 추가 인상한 값이 3000보다 큰 직원의 정보를 출력한다.

     

    SAS Programming
    %%SAS sas
    
    DATA STATSAS_2;
     Set EMP;
         where  sal*120/100 >= 3000; 
    RUN;
    PROC PRINT;RUN;

     

    Results
    empno enmae job mgr hiredate sal comm deptno
    7566 JONES MANAGER 7839 1981-04-02 2975 . 20
    7698 BLAKE MANAGER 7839 1981-03-01 2850 . 30
    7788 SCOTT ANALYST 7566 1982-12-09 3000 . 20
    7839 KING PRESIDEN . 1981-11-17 5000 . 10
    7902 FORD ANALYST 7566 1981-12-03 3000 . 20

     

     


    10. Python Dfply Package

     

    Python Programming
    emp >> filter_by( X.sal*120/100 >= 3000 )

     

    Results
    empno ename job mgr hiredate sal comm deptno
    7566 JONES MANAGER 7839.0 1981/04/02 2975 NaN 20
    7698 BLAKE MANAGER 7839.0 1981/03/01 2850 NaN 30
    7788 SCOTT ANALYST 7566.0 1982/12/09 3000 NaN 20
    7839 KING PRESIDENT NaN 1981/11/17 5000 NaN 10
    7902 FORD ANALYST 7566.0 1981/12/03 3000 NaN 20

     


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

    반응형

    댓글