Gán số thứ tự hàng

Window Functions trong Snowflake

Jake Roach

Field Data Engineer

Hàm cửa sổ

Dùng để tính toán trên một “cửa sổ” các hàng và trả về giá trị cho từng hàng

$$

$$

Xếp hạng

  • RANK, DENSE_RANK
  • FIRST_VALUE, LAST_VALUE, NTH_VALUE
  • LAG, LEAD

Tổng hợp

  • COUNT, SUM, AVG
Window Functions trong Snowflake

Hàm cửa sổ

Hàm cửa sổ giúp trả lời các câu hỏi mới!

$$

  • Buổi hòa nhạc phổ biến thứ ba ở mỗi địa điểm là gì?
  • Doanh số của một mặt hàng thay đổi theo ngày thế nào?
  • Trung bình trượt lượt xem tăng hay giảm?
Window Functions trong Snowflake

Hàm truyền thống

Hàm tổng hợp truyền thống phải có mệnh đề GROUP BY.

Minh họa trực quan một hàm tổng hợp.

Window Functions trong Snowflake

Hàm cửa sổ

Minh họa trực quan đầu ra của một hàm cửa sổ.

                                                   Không cần GROUP BY!

Window Functions trong Snowflake

Gán số thứ tự hàng

SELECT
    <other-fields>,

    ROW_NUMBER() OVER(
        ORDER BY <field>
    ) AS <alias>

FROM SCHEMA.table

...;

Hàm ROW_NUMBER() gán số thứ tự cho từng bản ghi trong tập kết quả

$$

  • OVER() xác định cửa sổ
  • Đặt bí danh cho cột kết quả
  • Không cần GROUP BY!
Window Functions trong Snowflake

Tham dự hòa nhạc

SELECT
    customer_id,
    event_name,

    -- Gán số thứ tự cho mỗi 
    -- bản ghi trong tập kết quả

    ROW_NUMBER() OVER(
        ORDER BY time_spent_minutes
    ) AS row_num

FROM concerts.attendance;
  customer_id  |  event_name  |  row_num  
 ------------- | ------------ | ---------
     1931292   |  Music Fest  |    1    
     5462384   |  Elton John  |    2    
     7732891   |  Coachella   |    3    
     3124888   |  Porch Fest  |    4

$$

$$

Nhớ cú pháp: ROW_NUMBER() OVER( ORDER BY ...)!

Window Functions trong Snowflake

Ayo berlatih!

Window Functions trong Snowflake

Preparing Video For Download...