어떤 동일한 결과를 도출하기 위하여, 사람들마다 각자의 성향으로 쿼리가 나올 것이다.

그 중 대비 및 등락률을 구함에 있어 내가 자주 사용하는 쿼리는 다음과 같다.

예전 오라클에서 아래의 느낌으로 사용하다가 이후 알티베이스에서도 동일하게 사용했었으며, 최근 MySQL에서도 8버전 이후부터 집계함수를 지원한다고 하여 작성해보았는데 동일한 결과가 도출됨을 확인하였다.

각 DBMS마다 제공되는 내장함수들의 이름이나 문법만 살짝 다르고, 기본 틀은 그대로 사용하면 된다.

(필요시 대비와 등락률에 대해 반올림 또는 버림 처리)

 

■ DBMS별 내장함수 비교 일부

오라클, 알티베이스 MySQL
DECODE IF
NVL IFNULL
TRUNC TRUNCATE

 

SELECT 일자
     , 종목
     , 종가
     , 종가-IFNULL(전일종가,0) AS 대비
     , IF(IFNULL(전일종가,0)=0,0,((종가-IFNULL(전일종가,0))/ABS(IFNULL(전일종가,0))))*100. AS 등락률
FROM (
         SELECT 일자
              , 종목
              , 종가
              , LEAD(종가) OVER(PARTITION BY 종목 ORDER BY 일자 DESC) AS 전일종가
              , RANK() OVER(PARTITION BY 종목 ORDER BY 일자 DESC) AS rank_no
         FROM 테이블
) 
WHERE rank_no = rank_no	   -- 종목별 전체기간 대상으로 결과를 보여주며, 만약 종목별 가장최근 결과만 보고싶으면 rank_no=1
ORDER BY 일자 DESC, 종목
;
Posted by 겨울섬
,

람다(lambda)

스크립트/Python 2021. 3. 14. 22:50

■ 기본 구조
  lambda 매개변수: 함수내용

 

■ 사용 형태

ref = lambda s: print(s)	# 이름 없는 형태로 함수를 정의하고 ref로 참조하도록 대입
ref('Hello World')		# Hello World

 

■ 선언 예

# 매개변수가 둘 이상인 경우는 콤마로 구분
lambda n1, n2: n1 + n2	

# 람다식에서 함수 호출도 가능
lambda s: len(s)	

# 매개변수가 없는 경우는 해당 자리를 비워두면 됨
lambda : print("Hello World")	
Posted by 겨울섬
,

■ iterable 객체 : iter 함수에 인자로 전달 가능한 객체
                 ex) 리스트, 튜플, 문자열, 파일 등

'''
hasattr 함수호출을 통해 __iter__함수가 있는지 물어봄으로써 iterable 객체인지 알 수 있다
'''
hasattr([1, 2, 3], '__iter__')	# True

 

■ iterator 객체 : iter 함수가 생성해서 반환하는 객체

 

■ 정리

 - iterable 객체를 대상으로 iter 함수를 호출해서 iterator 객체를 만든다
 - iterator 객체를 생성할 수 있는 대상이 되는 것이 iterable 객체이다
 - iterable 객체와 iterator 객체 모두 for루프의 반복 대상이 될 수 있다
 - iterable 객체가 와야 하는 위치에는 iterator 객체가 올 수 있다

 

■ 예제

ds = [1, 2, 3]
ir = iter(ds)	# iterator 객체 얻음
next(ir)	# 1
next(ir)	# 2
next(ir)	# 3
next(ir)	# StopIteration 예외 발생


# iterator를 이용한 반복문
ds = [1, 2, 3]
ir = iter(ds)
for i in ir:
	print(i, end=' ')	# 1 2 3
	

'스크립트 > Python' 카테고리의 다른 글

urllib을 이용하여 이미지 다운로드 하기  (0) 2021.05.30
람다(lambda)  (0) 2021.03.14
파일 처리  (0) 2021.03.14
파이썬 소스 작성시 권장 예  (0) 2021.03.12
파이썬 주석 종류  (0) 2021.03.11
Posted by 겨울섬
,