Database초보우낙
17. 오라클의 기타 비교연산자 4가지를 파이썬에서 구현하기 본문
오라클의 기타 비교연산자 4가지 !
오라클 판다스
- between .. and emp[’sal’].between(1000,3000)
- in emp[’job’].isin([10,20])
- like emp[’ename’].apply(lambda 함수)
- isnull emp[’comm’].isnull()
문제1. 월급이 1000에서 3000사이인 사원들의 이름과 월급을 출력하세요
emp[['ename','sal']][emp['sal'].between(1000,3000) ]
문제2. scott유저로 접속해서 scott유저가 가지고 있는 모든 테이블들에 대해서 통계정보를 수집하세요(SQLPLUS)
exec dbms_stats.gather_schema_stats('SCOTT');
문제3. scott유저가 소유하고 있는 테이블명과 그 건수를 출력하세요
select table_name, num_rows
from user_tables;
문제4. 위의 결과를 파이썬에서 출력하세요
import cx_Oracle
import pandas as pd
# 파이썬에서 오라클로 접속하기 위한 정보를 구성
dsn = cx_Oracle.makedsn('192.168.19.14',8081,'orcl')
db = cx_Oracle.connect('scott','tiger',dsn)
cursor=db.cursor() # 오라클의 데이터를 올리기 위한 메모리 구성
cursor.execute("""select table_name, num_rows from user_tables""") # 쿼리수행문의 결과를
# 메모리로 올린다.
row = cursor.fetchall() # 메모리의 데이터를 row 변수에 담는다
emp = pd.DataFrame(row) # row 에 담긴 값을 emp 테이블로 구성
colname = cursor.description
col=[] # col 이라는 비어있는 리스트를 생성합니다.
for i in colname: #colname 리스트 변수에 값을 하나씩 불러와서 i 에 담습니다.
col.append( i[0].lower() ) # i변수에 첫번째 요소를 소문자로 변경해서 col리스트에
emp = pd.DataFrame(list(row), columns=col) # row에 담긴 emp 데이터를 가지고
emp # 판다스 데이터 프레임을 생성하는데 컬럼명을 col 변수에 담긴 컬럼명으로 생성합니다.
문제5.scott이 가지고 있는 테이블중에서 건수가 5~14사이인 테이블만 출력하세요
import cx_Oracle
import pandas as pd
# 파이썬에서 오라클로 접속하기 위한 정보를 구성
dsn = cx_Oracle.makedsn('192.168.19.14',8081,'orcl')
db = cx_Oracle.connect('scott','tiger',dsn)
cursor=db.cursor() # 오라클의 데이터를 올리기 위한 메모리 구성
cursor.execute("""select table_name, num_rows from user_tables""") # 쿼리수행문의 결과를
# 메모리로 올린다.
row = cursor.fetchall() # 메모리의 데이터를 row 변수에 담는다
emp = pd.DataFrame(row) # row 에 담긴 값을 emp 테이블로 구성
colname = cursor.description
col=[] # col 이라는 비어있는 리스트를 생성합니다.
for i in colname: #colname 리스트 변수에 값을 하나씩 불러와서 i 에 담습니다.
col.append( i[0].lower() ) # i변수에 첫번째 요소를 소문자로 변경해서 col리스트에
data = pd.DataFrame(list(row), columns=col) # row에 담긴 emp 데이터를 가지고
data[:][data.num_rows.between(5,14)] # 판다스 데이터 프레임을 생성하는데 컬럼명을 col 변수에 담긴 컬럼명으로 생성합니다.
문제6. 사원 데이터 프레임에서 직업이 SALESMAN, ANALYST 의 모든 컬럼을 출력하시오!
답 : emp[ : ] [ emp.job.isin([’SALESMAN’,’ANALYST’]) ]
문제7. scott유저의 테이블들 중에서 EMP와 DEPT의 테이블명과 그 건수를 조회하세요
data[:][ data.table_name.isin(['EMP','DEPT'])]
문제8. 오라클 데이터 베이스의 테이블 스페이스 이름들을 파이썬에서 출력하시오!
문제9. dba 가 항상 모니터링해야하는 테이블 스페이스의 사용량을 파이썬에서 출력하시오 !
import cx_Oracle
import pandas as pd
# 파이썬에서 오라클로 접속하기 위한 정보를 구성
dsn = cx_Oracle.makedsn('192.168.19.14',8081,'orcl')
db = cx_Oracle.connect('system','oracle_4U',dsn)
cursor=db.cursor() # 오라클의 데이터를 올리기 위한 메모리 구성
cursor.execute("""select t.tablespace_name,
((t.total_size - f.free_size) / t.total_size) * 100 usedspace
from (select tablespace_name, sum(bytes)/1024/1024 total_size
from dba_data_files
group by tablespace_name) t,
(select tablespace_name, sum(bytes)/1024/1024 free_size
from dba_free_space
group by tablespace_name) f
where t.tablespace_name = f.tablespace_name(+)""") # 쿼리수행문의 결과를
# 메모리로 올린다.
row = cursor.fetchall() # 메모리의 데이터를 row 변수에 담는다
emp = pd.DataFrame(row) # row 에 담긴 값을 emp 테이블로 구성
colname = cursor.description
col=[] # col 이라는 비어있는 리스트를 생성합니다.
for i in colname: #colname 리스트 변수에 값을 하나씩 불러와서 i 에 담습니다.
col.append( i[0].lower() ) # i변수에 첫번째 요소를 소문자로 변경해서 col리스트에
data = pd.DataFrame(list(row), columns=col) # row에 담긴 emp 데이터를 가지고
data# 판다스 데이터 프레임을 생성하는데 컬럼명을 col 변수에 담긴 컬럼명으로 생성합니다.
import matplotlib.pyplot as plt
# 사원 이름을 x축으로, 월급을 y축으로 하는 막대 그래프 생성
plt.bar(emp['ename'], emp['sal'])
# 그래프에 제목 추가
plt.title('사원별 월급')
# x축과 y축에 각각 이름 붙이기
plt.xlabel('사원 이름')
plt.ylabel('월급')
# 그래프 보여주기
plt.show()
문제10. 사원 테이블의 월급을 막대 그래프로 시각화 하시오 !
import matplotlib.pyplot as plt
import numpy as np
# Set colors for each bar
colors = plt.cm.viridis(np.linspace(0, 1, len(emp['ename'])))
# Create a bar chart with different colors for each bar
emp['sal'].plot(kind='bar', color=colors, figsize=(12, 6))
# Add title to the chart
plt.title('Employee Salary Bar Chart')
# Add label to x-axis
plt.xlabel('Employee')
# Add label to y-axis
plt.ylabel('Salary')
# Add employee names to x-axis
plt.xticks(range(len(emp['ename'])), emp['ename'])
# Display the chart
plt.show()
문제11. 커미션이 null 인 사원들의 이름과 커미션을 출력하시오
emp[['ename','comm']] [ emp.comm.isnull() ]
문제12. 커미션이 null 이 아닌 사원들의 이름과 커미션을 출력하시오
emp[['ename','comm']] [ ~emp.comm.isnull() ]
설명 : ~은 not
Like
문제13.이름의 첫번째 철자가 A로 시작하는 사원들의 이름과 월급을 출력하세요
emp[['ename','sal']][emp.ename.apply(lambda 입력값:출력값[0]=='A') ]
emp[['ename','sal']][emp.ename.apply(lambda x:x[0]=='A') ]
문제14. 이름의 끝글짜가 T로 끝나는 사원의 이름과 월급을 출력하세요
emp[['ename','sal']][emp.ename.apply(lambda x:x[-1]=='T') ]
'파이썬' 카테고리의 다른 글
19. 파이썬의 문자열 함수를 이용하여 alert logfile 분석하기 (0) | 2024.04.17 |
---|---|
18. 오라클의 alert log file을 파이썬에서 출력하기 (0) | 2024.04.16 |
16. 판다스 기본문법1 (데이터 검색하기) (0) | 2024.04.16 |
15. emp 데이터 프레임에 컬럼을 붙이기 (0) | 2024.04.16 |
14. 오라클과 파이썬 연동하기 (0) | 2024.04.16 |