[SQL]-(055) 데이터분석 함수로 출력 결과 넘버링 하기
[Reference] 초보자를 위한 SQL 200제
[SQL 문법]
출력되는 순서대로 순위를 부여할 수 있다.
SELECT empno, ename, sal, RANK() OVER (ORDER BY sal DESC) RANK,
DENSE_RANK() OVER (ORDER BY sal DESC) DENSE_RANK,
ROW_NUMBER() OVER (ORDER BY sal DESC) NUM
FROM emp
WHERE deptno = 20
[예시]
# 오라클 연동 및 접속
import pandas as pd
import cx_Oracle
dsn=cx_Oracle.makedsn('localhost',1521,'orcl')
db=cx_Oracle.connect('scott','tiger')
cursor=db.cursor()
# SQL 문법
cursor.execute("""
SELECT empno, ename, sal, RANK() OVER (ORDER BY sal DESC) RANK,
DENSE_RANK() OVER (ORDER BY sal DESC) DENSE_RANK,
ROW_NUMBER() OVER (ORDER BY sal DESC) NUM
FROM emp
WHERE deptno = 20
"""
)
row=cursor.fetchall()
colname=cursor.description
col=[]
for i in colname:
col.append(i[0])
# pandas를 사용한 데이터 프레임 형식으로 변환
emp=pd.DataFrame(row,columns=col)
print(emp)
[결과]
EMPNO ENAME SAL RANK DENSE_RANK NUM
0 7902 FORD 3000.0 1 1 1
1 7788 SCOTT 3000.0 1 1 2
2 7566 JONES 2975.0 3 2 3
3 7876 ADAMS 1100.0 4 3 4
4 7369 SMITH 800.0 5 4 5
Leave a comment