SQL | NoSQL |
Oracle, mySQL, mariaDB, mssql | hive, mongodb, pig <- 하둡(hdfs와 mapreduce) |
ㅇmongodb를 편하게 이용하기 위해서 GUI(Graphic User Interface) 툴 사용
GUI | DATABASE |
sqldeveloper | oracle |
workbench | mariadb, mysql |
studio3T | mongodb |
Gui 툴을 사용하지 않는다면 putty나 모바텀에서 작업해야하는데 컬럼 갯수가 많은 대용량 데이터는 터미널창에서 검색하기에는 좀 불편함.
ㅇstudio3T 사용하기
다운로드 : https://studio3t.com/
문제333. 직업, 직업별 토탈월급을 출력하시오.
db.emp.aggregate([ {$group:{_id:'$job',sumsal:{$sum:'$sal'}}} ])
문제334. 위의 결과를 다시 출력하는데 직업이 SALESMAN은 제외하고 출력하시오.
db.emp.aggregate([ {$match:{job:{$ne:'SALESMAN'}}},
{$group:{_id:'$job',sumsal:{$sum:'$sal'}}} ])
문제335. 위의 결과를 다시 출력하는데 직업별 토탈월급이 높은 것부터 출력하시오.
db.emp.aggregate([ {$match:{job:{$ne:'SALESMAN'}}},
{$group:{_id:'$job',sumsal:{$sum:'$sal'}}},
{$sort:{'sumsal':-1}} ])
문제336. 직업, 직업별 인원수를 출력하시오.
db.emp.aggregate([ {$group:{_id:'$job',cnt:{$sum:1}}} ])
몽고디비는 count함수를 지원하지 않음. {$sum:1}은 1이라는 데이터를 행마다 부여해 컬럼을 만들고 직업별로 1을 집계한 것.
ㅇ 몽고디비 쿼리문을 몽고비디 테이블로 export하기
문제337. 위의 결과를 result라는 몽고디비 테이블로 생성하시오.
db.emp.aggregate([ {$group:{_id:'$job',cnt:{$sum:1}}},
{$out:"result"} ])
show collections
db.result.find()
+) SQL에서는 아래와 같이 수행하면 됨.
create table result
as
select job, count(*) as cnt
from emp
group by job;
문제338. 위의 result테이블의 결과를 csv로 내리시오.
(putty에서 수행)
[root@centos ~]# mongoexport -d test -c result -f _id,cnt --csv >> job_result.csv
2022-03-30T11:04:24.627+0900 csv flag is deprecated; please use --type=csv instead
2022-03-30T11:04:24.627+0900 connected to: localhost
2022-03-30T11:04:24.627+0900 exported 5 records
[root@centos ~]# cat job_result.csv
_id,cnt
PRESIDENT,1
MANAGER,3
SALESMAN,4
ANALYST,2
CLERK,4
몽고디비에서 우리가 검색하기 원하는 결과만 따로 테이블로 만들어서 위와 같이 테이블을 통채로 리눅스에 csv파일로 export 시켰습니다.
문제339. /home/oracle 밑에 있는 job_result.csv를 모바텀을 이용해 윈도우쪽으로 내려 받으시오.
문제340. job_result.csv로 윈도우의 주피터 노브북에서 job_result라는 판다스 데이터 프레임을 생성하시오.
문제341. 위의 결과를 막대 그래프로 시각화하시오.
문제342. 1년 중 몇 월에 비행기 출발 지연이 많이 발생하는가?
db.airline.aggregate([ {$match:{depdelay:{$gt:0}} },
{$group:{_id:"$month", count:{$sum:1}}},
{$sort:{"_id":1} } ])
문제343. 위의 결과를 몽고 디비에서 air_result라는 이름으로 테이블로 생성하시오.
db.airline.aggregate([ {$match:{depdelay:{$gt:0}} },
{$group:{_id:"$month", count:{$sum:1}}},
{$sort:{"_id":1} },
{$out: "air_result"} ])
문제344. 몽고디비에 있는 air_result 테이블을 /home/oracle밑에 air_result.csv로 내리시오.
[root@centos ~]# mongoexport -d test -c air_result -f _id,count --csv >> air_result.csv
2022-03-30T11:48:17.473+0900 csv flag is deprecated; please use --type=csv instead
2022-03-30T11:48:17.475+0900 connected to: localhost
2022-03-30T11:48:17.476+0900 exported 12 records
[root@centos ~]# cat air_result.csv
_id,count
1,215791
2,184811
3,195139
4,181870
5,170538
6,201658
7,222409
8,207187
9,170182
10,190085
11,213819
12,240057
문제345. /home/oracle 밑에 있는 air_result.csv를 윈도우에 내리시오.
문제346. 윈도우로 내려받은 air_result.csv를 판다스 데이터 프레임으로 만들고 라인그래프로 시각화하세요.
import matplotlib.pyplot as plt
air_result = pd.read_csv("c:\\data\\air_result.csv")
air_result.columns = ['month','cnt']
plt.figure(figsize=(20,8))
plt.plot(air_result.month, air_result.cnt)
plt.xticks(size = 20)
plt.yticks(size = 20)
plt.show()
'Study > class note' 카테고리의 다른 글
딥러닝 / 넘파이 (0) | 2022.03.30 |
---|---|
하둡 / 몽고디비 DML문 작성하기(insert, update) (0) | 2022.03.30 |
하둡 / 몽고디비 설치 (0) | 2022.03.29 |
하둡 / 몽고디비 NoSQL 사용하기, csv파일 로드(리눅스os, 하둡) (0) | 2022.03.29 |
하둡 / 하이브 파티션 테이블 2 (0) | 2022.03.29 |