sqldf
- SQL을 이용해서 데이터를 처리
sqldf 라이브러리 설치 및 임포트
install.packages("sqldf")
library(sqldf)
sqldf 사용 예
# emp 테이블에서 사원번호 출력 sqldf("select employee_id from emp") |
|
# 부서번호가 20인 사원들의 사원번호 출력 sqldf("select employee_id |
|
# 부서번호들의 중복을 제거하고 출력 sqldf("select distinct department_id |
|
# 부서번호가 30인 사원들의 모든 정보 출력. 급여를 내림차순으로 정렬 sqldf("select * |
|
# 모든 사원의 수, 급여의 합, 급여의 평균, 급여의 분산, 급여의 표본, 급여의 최대값, 급여의 최소값 출력 sqldf("select count(employee_id),sum(salary),avg(salary), |
|
# 부서번호 별로 묶었을때 부서번호와 부서별 급여합 출력 sqldf("select department_id, sum(salary) from emp group by department_id") |
|
# 부서번호 별로 묶었을때 급여합이 10000보다 큰 부서의 부서번호와 급여합 출력 sqldf("select department_id, sum(salary) from emp group by department_id having sum(salary) > 10000") |
|
# 모든 사원들의 성, 대문자 성, 소문자 성, 성의 앞 2문자, 성의 길이 출력 sqldf("select last_name, upper(last_name)up, from emp") |
|
# 모든 사원들의 성, 성의 앞 2문자, 성의 오른쪽 1문자, 성의 왼쪽 2문자 출력 sqldf("select last_name, substr(last_name,1,2) sub, rightstr(last_name,2) r, leftstr(last_name,2) l from emp") |
|
# 모든 사원의 급여/3 , 소수점 2자리 뒤에서 반올림(급여/3), sqldf("select salary/3,round(salary/3,-2) r2,round(salary/3,0) r from emp") |
|
# 모든 사원의 급여/3 , 소수점 2자리 뒤에서 반올림(급여/3), sqldf("select salary/3,round(salary/3,-2) r2, from emp") |
|
# 부서번호가 null인 사원의 모든 정보 출력 sqldf("select * |
|
# 부서번호가 null이 아닌 사원의 모든 정보 출력 sqldf("select * |
|
# 부서번호가 10 혹은 20인 사원의 성을 출력 sqldf("select last_name |
|
# 급여가 10000과 20000 사이인 사원의 성을 출력 sqldf("select last_name |
|
# 성이 'K'로 시작하는 사원의 성을 출력 sqldf("select last_name |
|
# 성의 두번째 글자가 'i'로 시작하는 사원의 성을 출력 sqldf("select last_name |
|
# emp과 dept를 조인하고 emp 테이블에 있는 성과 dept 테이블에 있는 부서 이름을 출력 sqldf("select e.last_name, d.department_name from emp e, dept d where e.department_id = d.department_id") |
|
# 위의 내용을 ANSI 표준 방법으로 만듬 sqldf("select e.last_name, d.department_name from emp e join dept d on e.department_id = d.department_id") |
|
# 위의 내용에 using절 사용 sqldf("select e.last_name, d.department_name from emp e join dept d using(department_id)") |
|
# left outer join 사용 sqldf("select e.last_name, d.department_name from emp e left outer join dept d on e.department_id = d.department_id") |
|
# right, full outer join 없음 sqldf("select e.last_name, d.department_name from emp e left outer join dept d on e.department_id = d.department_id union select e.last_name, d.department_name from dept d left outer join emp e on e.department_id = d.department_id") |
|
# 누락된 정보까지 전부 보기 sqldf("select e.last_name, d.department_name from emp e left outer join dept d on e.department_id = d.department_id union all select e.last_name, d.department_name from dept d left outer join emp e on e.department_id = d.department_id") |
|
# 교집합 sqldf("select e.last_name, d.department_name from emp e left outer join dept d on e.department_id = d.department_id intersect select e.last_name, d.department_name from dept d left outer join emp e on e.department_id = d.department_id") |
|
# 차집합 sqldf("select e.last_name, d.department_name from emp e left outer join dept d on e.department_id = d.department_id except select e.last_name, d.department_name from dept d left outer join emp e on e.department_id = d.department_id") |
|
# 사원번호가 150인 사원보다 급여가 많은 사원의 성과 급여 출력 sqldf("select last_name, salary from emp where salary > (select salary from emp where employee_id=150)") |
|
# 관리자 사원에 대해서 찾기 x<- sqldf("select * from emp where employee_id in (select manager_id from emp)")
x<- sqldf("select * from emp e where exists (select 'x' from emp where manager_id = e.employee_id)") head(x) |
|
# 관리자가 아닌 사원 x <- sqldf("select * from emp where employee_id not in (select manager_id from emp where manager_id is not null)")
x <- sqldf("select * from emp e where not exists (select 'x' from emp where manager_id = e.employee_id)")
head(x) |
'컴퓨터 > R' 카테고리의 다른 글
R - grep과 정규표현식 (0) | 2020.04.17 |
---|---|
R - melt / dcast (0) | 2020.04.17 |
R - dplyr 라이브러리 ② summarise , group_by (0) | 2020.04.17 |
R - dplyr 라이브러리 ① filter, select, arrange, %>%, mutate (0) | 2020.04.16 |
R - subset / ddply (0) | 2020.04.16 |