문제
다음 SQL에서 사용된 윈도우 함수의 실행 결과로 가장 적절한 것은?
SQLSELECT product_id, sales_amount, LAG(sales_amount, 2, 0) OVER (ORDER BY sales_amount DESC) as prev_sales FROM monthly_sales WHERE month_id = 202312;
테이블 데이터: product_id(A,B,C,D), sales_amount(100,200,150,300)
① prev_sales 값은 순서대로 0, 0, 300, 200이 된다
② prev_sales 값은 순서대로 0, 0, 200, 150이 된다
③ prev_sales 값은 순서대로 200, 100, 0, 0이 된다
④ prev_sales 값은 순서대로 300, 200, 150, 100이 된다
정답
1번
해설
ORDER BY sales_amount DESC로 정렬하면 D(300), B(200), C(150), A(100) 순서가 됩니다. LAG(컬럼, 2, 0)은 2행 이전 값을 가져오며, 값이 없으면 기본값 0을 사용합니다. 따라서 첫 번째와 두 번째 행은 0, 세 번째 행은 300, 네 번째 행은 200이 됩니다.