FAQ
특정 컬럼의 값들을 ordering하여 다음 값과의 차이를 구하는 SQL | |||||
분류 | SQL | 등록일 | 2013-07-09 | 조회수 | 2270 |
bluetheme 2005-09-07 39 특정 컬럼의 값들을 ordering하여 다음 값과의 차이를 구하는 SQL +++++++++++++++++++++++++++++++++++++++ 요약 ++++ 아래의 예와 같은 결과를 도출하기 위한 쿼리 - T1 테이블 : 9 1 5 3 8 - 원하는 결과 : 2 (1과 3의 차리) 2 (3와 5의 차이) 3 (5와 8의 차이) 1 (8와 9의 차이) SQL 1 +++++++ select (select min(v2.i1) - v1.i1 from t1 v2 where v2.i1 > v1.i1 ) from t1 v1 where v1.i1 > 0 order by i1 ; SQL 2 +++++++ select v1.i1 AS PREV_VALUE, MIN(v2.i1) AS NEXT_VALUE, MIN(v2.i1) - v1.i1 AS DIFF_VALUE from t1 v1, t1 v2 where v2.i1> v1.i1 group by v1.i1 order by v1.i1; ** 원작자는 이경모씨입니다. 이런 형태의 쿼리를 수행했을 때 소량의 데이터에서는 SQL1이 성능이 좀 더 빠르거나 대동소이한 결과를 보였으나 대량에 데이터에 대해서는 SQL2의 성능이 훨씬 더 나았습니다. |