[Reference] 초보자를 위한 SQL 200제


[SQL 문법]

특정 컬럼에 속한 데이터를 가로로 출력할 수 있다.
WITHIN GROUP은 ‘~이내의’라는 뜻으로 group 다음에 나오는 괄호에 속한 그룹의 데이터를 출력하겠다는 것이다.
LISTAGG 함수를 사용하려면 GROUP BY절은 필수로 기술해야 한다.

cursor.execute("""
SELECT deptno, LISTAGG(ename,', ') within group (order by ename) as EMPLOYEE
  FROM emp
  GROUP BY deptno

[예시]

# 오라클 연동 및 접속
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 deptno, LISTAGG(ename,', ') within group (order by ename) as EMPLOYEE
  FROM emp
  GROUP BY deptno
""")

row=cursor.fetchall()
colname=cursor.description
col=[]

for i in colname:
    col.append(i[0])

# pandas를 사용한 데이터 프레임 형식으로 변환
emp=pd.DataFrame(row,columns=col)
print(emp)

[결과]

   DEPTNO                                   EMPLOYEE
0      10                        CLARK, KING, MILLER
1      20           ADAMS, FORD, JONES, SCOTT, SMITH
2      30  ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD

Leave a comment