All about Oracle Technologies

Saturday 17 January 2015

Tổng quan về các hàm phân tích trong Oracle

Tổng quan:
Từ phiên bản 8.1.6, Oracle đã hỗ trợ các hàm Analytic Functions (nhóm hàm phân tích) để hỗ trợ giải quyết các vấn đề về tính toán phức tạp như: TOP-N queries, pivoting resultsets, moving averages, running totals, percentages within group.

Việc giải quyết các vấn đề tính toán phức tạp bằng cách dùng các câu lệnh Standard PL/SQL thì vấn đề Performance lại là 1 bài toán nan giải. Do vậy Oracle bổ sung thêm vào các nhóm hàm phân tích để giúp chúng ta giải quyết vấn đề này. Không chỉ dễ dàng viết câu lệnh, nhóm hàm phân tích còn chạy nhanh hơn các câu lệnh SQL thuần hoặc các câu lệnh PL/SQL.

Cách thức hoạt động của nhóm hàm phân tích:
Nhóm hàm này tính toán 1 tập giá trị dựa vào 1 nhóm các dòng trong CDSL. Nó hoàn toàn khác với Aggregate Functions (nhóm hàm thống kê) ở chỗ kết quả trả về của nó sẽ là nhiều dòng cho cùng 1 nhóm. 1 nhóm các dòng như vậy Oracle gọi là window.

Cú pháp:
Analytic-Function(<Argument>,<Argument>,...)
OVER (
  <Query-Partition-Clause>
  <Order-By-Clause>
  <Windowing-Clause>
)
trong đó:

  • Analytic-Function: hàm phân tích được hỗ trợ bởi Oracle gồm các hàm sau: AVG, CORR, COVAR_POP, COVAR_SAMP, COUNT, CUME_DIST, DENSE_RANK, FIRST, FIRST_VALUE, LAG, LAST, LAST_VALUE, LEAD, MAX, MIN, NTILE, PERCENT_RANK, PERCENTILE_CONT, PERCENTILE_DISC, RANK, RATIO_TO_REPORT, STDDEV, STDDEV_POP, STDDEV_SAMP, SUM, VAR_POP, VAR_SAMP, VARIANCE,...
  • Arguments: tham số của hàm
  • Query-Partition-Clause: từ khóa được sử dụng ở đây là PARTITION BY. Mệnh đề này cho phép chia 1 tập kết quả ra thành N nhóm tùy thuộc vào các tham số truyền vào
  • Order-By-Clause: từ khóa được sử dụng ở đây là ORDER BY. Mệnh đề này cho phép sắp xếp từng nhóm kết quả sau khi được partition
  • Windowing-Clause: xem các bài viết sau để hiểu rõ hơn

0 comments :

Post a Comment