Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Hướng dẫn dữ liệu:Sử dụng các chức năng của cửa sổ

Chức năng của Window là gì?

Các chức năng của cửa sổ cho phép người dùng thực hiện các phép tính đối với các phân vùng (tức là nhóm con hoặc phần) của một tập hợp kết quả, thường là một bảng hoặc các kết quả từ một truy vấn khác. Không giống như các hàm tổng hợp truyền thống, chỉ trả về một giá trị duy nhất cho mỗi nhóm được xác định trong truy vấn, các hàm cửa sổ trả về một giá trị duy nhất cho mỗi hàng đầu vào.

Các hàm cửa sổ hữu ích như thế nào?

Các hàm cửa sổ làm tăng hiệu quả và giảm độ phức tạp của các truy vấn phân tích các phân vùng (cửa sổ) của tập dữ liệu bằng cách cung cấp một giải pháp thay thế cho các khái niệm SQL phức tạp hơn, ví dụ:truy vấn dẫn xuất. Các trường hợp sử dụng phổ biến bao gồm:

  • Xếp hạng kết quả trong một cửa sổ cụ thể (ví dụ:xếp hạng theo nhóm)
  • Truy cập dữ liệu từ một hàng khác trong một cửa sổ cụ thể (ví dụ:báo cáo theo định kỳ)
  • Tổng hợp trong một cửa sổ cụ thể (ví dụ:tổng số đang chạy):

Cách sử dụng các Hàm Window

Các chức năng của cửa sổ được khởi tạo bằng OVER và được định cấu hình bằng ba khái niệm:

  • phân vùng cửa sổ (PARTITION BY ) - nhóm các hàng thành các phân vùng
  • sắp xếp theo cửa sổ (ORDER BY ) - xác định thứ tự hoặc trình tự của các hàng trong mỗi cửa sổ
  • khung cửa sổ (ROWS ) - xác định cửa sổ bằng cách sử dụng độ lệch từ hàng được chỉ định

Tổng quan về cú pháp

function (expression) OVER
     ( [ PARTITION BY expression_list ]
       [ ORDER BY order_list ]
       [ ROWS frame_clause ])

Định nghĩa

  • express_list:danh sách các biểu thức được phân tách bằng dấu phẩy, thường là tên cột
  • order_list:danh sách các biểu thức được phân tách bằng dấu phẩy, thường là tên cột
  • frame_clause:xác định độ lệch bằng CURRENT ROW , _value_ PRECEDING , UNBOUNDED PRECEDING , _value_ FOLLOWING , UNBOUNDED FOLLOWING

Ví dụ

Xếp hạng:xếp hạng theo nhóm

SELECT
      campaign
    , month
    , total_cost
    , rank() OVER (PARTITION BY month ORDER BY month DESC, total_cost DESC) as "rank"
FROM Cost_by_Month
LIMIT 8

Hàng trước:phân tích theo khoảng thời gian

SELECT
      campaign
    , month
    , total_cost
    , LAG(total_cost, 1) OVER (ORDER BY campaign, month) as "previous total cost"
FROM Cost_by_Month
WHERE campaign = 'TV'
LIMIT 4

Tổng hợp trong một cửa sổ:tổng số đang chạy

SELECT
    campaign, month, monthly_cost
  , sum(monthly_cost) OVER (PARTITION BY campaign ORDER BY month ROWS BETWEEN UNBOUNDED
    PRECEDING and CURRENT ROW) as "running cost total"
FROM Cost_by_Month

Danh sách Tài liệu &Chức năng:

Xin lưu ý rằng sự khác biệt nhỏ trong cách sử dụng và cú pháp tồn tại từ cơ sở dữ liệu đến cơ sở dữ liệu. Để biết thông tin cụ thể cho việc triển khai của bạn, vui lòng sử dụng tài liệu dành riêng cho nguồn được cung cấp bên dưới.

Postgres

  • Hướng dẫn
  • Chức năng

Dịch chuyển đỏ

  • Hướng dẫn
  • Chức năng

Oracle

  • Hướng dẫn

SQLServer

  • Hướng dẫn

BigQuery

  • Hướng dẫn

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng AI để điều chỉnh SQL cho một quy trình tự động thực

  2. Rethink Flask - Một danh sách Todo đơn giản được hỗ trợ bởi Flask và RethinkDB

  3. UNION ALL Tối ưu hóa

  4. Giới hạn con trỏ truy vấn API Salesforce

  5. Cách lưu trữ lịch biểu của nhân viên trong cơ sở dữ liệu