포스팅 목차
155. Find out how many managers are there without listing them.
* 관리자 역할을 수행하고 있는 직원들의 수를 집계하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- 26 / 42 / 137
- 유사문제 : 23 / 58 / 84/ 100 / 86/ 137번 리스트
- [데이터 집계] 특정 조건을 만족하는 데이터 집계 - 총건수 카운트
- 데이터 전처리 - SQL, Pandas, R Prog, Dplyr, Dfply, SQLDF, PANDASQL, DATA.TABLE, SAS, Proc Sql
|
1. Oracle(오라클)
서브쿼리를 통하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택하여 사원수를 집계한다.
Oracle Programming |
Select count (*) emp_cnt
from EMP
where empno in (select mgr from EMP);
2. Python Pandas(파이썬)
isin 함수를 사용하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택한 후 사원수를 집계한다.
Python Programming |
emp[ emp['empno'].isin(emp['mgr']) ].agg({'empno':['count']})
Results |
empno | |
count | 6 |
Python Programming |
emp[ emp['empno'].isin(emp['mgr']) ]['empno'].count()
Results |
6
3. R Programming (R Package)
%in% 함수를 사용하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택하여 사원수를 집계한다.
R Programming |
%%R
nrow( emp[ emp$empno %in% unlist(emp$mgr) , ] )
Results |
[1] 6
4. R Dplyr Package
%in% 함수를 사용하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택 후 filter() 함수를 통하여 선택된 사원들의 수를 집계한다.
R Programming |
%%R
emp %>%
dplyr::filter( empno %in% ( emp %>% dplyr::select(mgr) %>% unlist() ) ) %>%
dplyr::summarise(emp_cnt = n())
Results |
# A tibble: 1 x 1
emp_cnt
<int>
1 6
5. R sqldf Package
emp 테이블의 사원번호(‘empno’)가 서브쿼리의 관리자 사원번호(‘mgr’) 리스트에 명단이 존재하는 사원들의 정보를 선택하여서 관리자 역할을 수행하고 있는 사원들의 수를 집계한다.
R Programming |
%%R
sqldf(" Select count (*) emp_cnt
from emp
where empno in (select mgr from emp);")
Results |
emp_cnt
1 6
6. Python pandasql Package
서브쿼리를 통하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택하여 사원수를 집계한다.
Python Programming |
ps.sqldf(" Select count (*) emp_cnt \
from emp \
where empno in (select mgr from emp);")
Results |
emp_cnt | |
0 | 6 |
7. R data.table Package
%in% 함수를 통하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택한 후 집계한다.
R Programming |
%%R
DT <- data.table(emp)
DT[empno %in% DT[,mgr], .('count' = .N) ]
Results |
count
1: 6
8. SAS Proc SQL
서브쿼리를 통하여 emp테이블의 관리자 사원번호(‘mgr’)에 명단이 존재하는 사원번호(‘empno’)를 선택하여 사원수를 집계한다.
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
Select count (*) AS emp_cnt
from EMP
where empno in (select mgr from EMP);
QUIT;
PROC PRINT;RUN;
Results |
OBS | emp_cnt |
1 | 6 |
9. SAS Data Step
SAS Programming |
%%SAS sas
PROC SORT DATA=emp OUT=EMP_1(RENAME=EMPNO=JOIN_KEY);
BY EMPNO;
RUN;
PROC SORT DATA=emp OUT=EMP_2(RENAME=mgr=JOIN_KEY) NODUPKEY;
BY mgr;
where mgr is not null;
RUN;
DATA STATSAS_2;
MERGE EMP_1(IN=A) EMP_2(IN=B);
BY JOIN_KEY;
IF A AND B;
RUN;
PROC SUMMARY DATA=STATSAS_2;
VAR EMPNO;
OUTPUT OUT=STATSAS_3(DROP=_:) N=;
QUIT;
PROC PRINT;RUN;
Results |
OBS | empno |
1 | 6 |
10. Python Dfply Package
Python Programming |
# [참고] 함수 사용. (52번 예제 참고) : AttributeError: 'DataFrame' object has no attribute 'ix'
@pipe
def pull_list(df, column=-1):
return df.loc[:, column]
emp >> \
filter_by( X.empno.isin( emp>>select(X.mgr) >> pull_list('mgr'))) >>\
summarize(emp_cnt = X.empno.count())
Results |
emp_cnt | |
0 | 6 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 전처리 방법 리스트
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[집계 함수] 데이터 유일성 체크 - 데이터 중복 제거 - 157 (오라클 SQL, R, Python, SAS) (0) | 2023.01.10 |
---|---|
[집계 함수] 그룹별 평균과 합계 계산 - 결측치 처리 - 156 (오라클 SQL, R, Python, SAS) (0) | 2023.01.09 |
[결측치 처리 ] 특정 조건을 만족하는 데이터 추출- 154 (오라클 SQL, R, Python, SAS) (0) | 2023.01.08 |
[변수 생성] 신규 변수를 생성하여 출력- 153 (오라클 SQL, R, Python, SAS) (0) | 2023.01.06 |
[데이터 상하 결합(UNION)] 특정 조건을 만족하는 데이터 추출 - 비상관 서브쿼리 - 152 (오라클 SQL, R, Python, SAS) (0) | 2023.01.04 |
댓글