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


[SQL 문법]

조인하려는 컬럼들 간의 연결고리가 이퀄조건이 아닐 때도 조인할 수 있다.
이를 NON EQUI JOIN이라고 한다.
아래 예시는 LOWSAL 구간이 700이고 UPPERSAL 구간이 1200일 때 1GRADE SAL인데 NON EQUI 조인으로 (700, 1200) 사이의 emp 테이블의 SAL에 GRADE를 매기는 예시이다.

SELECT e.ename, e.sal, s.grade
  FROM emp e, salgrade s
  WHERE e.sal between s.losal and s.hisal

[예시]

# 오라클 연동 및 접속
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 e.ename, e.sal, s.grade
  FROM emp e, salgrade s
  WHERE e.sal between s.losal and s.hisal
"""
)

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

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

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

[결과]

     ENAME     SAL  GRADE
0    SMITH   800.0      1
1    JAMES   950.0      1
2    ADAMS  1100.0      1
3     WARD  1250.0      2
4   MARTIN  1250.0      2
5   MILLER  1300.0      2
6   TURNER  1500.0      3
7    ALLEN  1600.0      3
8    CLARK  2450.0      4
9    BLAKE  2850.0      4
10   JONES  2975.0      4
11    FORD  3000.0      4
12   SCOTT  3000.0      4
13    KING  5000.0      5

Leave a comment