Logo Zephyrnet

Phân tích DENSE_RANK(): Hướng dẫn từng bước dành cho những người đam mê SQL – KDnuggets

Ngày:

Phân tích DENSE_RANK(): Hướng dẫn từng bước dành cho những người đam mê SQL
Hình ảnh của Editor
 

Trong thế giới dựa trên dữ liệu ngày nay, SQL (Ngôn ngữ truy vấn có cấu trúc) đóng vai trò là nền tảng để quản lý và thao tác các hệ thống cơ sở dữ liệu. Thành phần cốt lõi của sức mạnh và tính linh hoạt của SQL nằm ở chức năng cửa sổ, một loại hàm thực hiện các phép tính trên các tập hợp hàng liên quan đến hàng hiện tại.

Hãy tưởng tượng bạn đang xem dữ liệu của mình thông qua một cửa sổ trượt và dựa trên vị trí cũng như kích thước của cửa sổ này, bạn thực hiện các phép tính hoặc biến đổi trên dữ liệu của mình. Về cơ bản đó là chức năng của các hàm cửa sổ SQL. Chúng xử lý các tác vụ như tính toán tổng số lần chạy, mức trung bình hoặc thứ hạng, những công việc khó thực hiện bằng cách sử dụng các lệnh SQL tiêu chuẩn.

Một trong những công cụ mạnh mẽ nhất trong hộp công cụ chức năng cửa sổ là chức năng xếp hạng, cụ thể là chức năng DENSE_RANK() chức năng. Chức năng này là một ơn trời cho các nhà phân tích dữ liệu, cho phép chúng tôi xếp hạng các hàng dữ liệu khác nhau mà không có bất kỳ khoảng trống nào. Cho dù bạn đang tìm kiếm số liệu bán hàng, dữ liệu lưu lượng truy cập trang web hay thậm chí là một danh sách đơn giản về điểm kiểm tra của học sinh, DENSE_RANK() Là không thể thiếu.

Trong bài viết này, chúng ta sẽ đi sâu vào hoạt động bên trong của DENSE_RANK(), đặt nó cạnh những anh chị em gần gũi của nó RANK()ROW_NUMBER()và trình bày cách tránh những cạm bẫy phổ biến có thể khiến bạn gặp khó khăn trong hành trình SQL của mình. Sẵn sàng để nâng cao kỹ năng phân tích dữ liệu của bạn? Hãy đi sâu vào.

Các hàm xếp hạng trong SQL là một tập hợp con của các hàm cửa sổ gán một thứ hạng duy nhất cho mỗi hàng trong tập kết quả. Các giá trị xếp hạng này tương ứng với một thứ tự cụ thể, được xác định bởi mệnh đề ORDER BY trong hàm. Các hàm xếp hạng là trụ cột của SQL, được sử dụng rộng rãi trong phân tích dữ liệu cho nhiều nhiệm vụ khác nhau, chẳng hạn như tìm nhân viên bán hàng hàng đầu, xác định trang web hoạt động tốt nhất hoặc xác định bộ phim có doanh thu cao nhất trong một năm cụ thể.

Có ba hàm xếp hạng chính trong SQL, đó là RANK(), ROW_NUMBER()DENSE_RANK(). Mỗi chức năng này hoạt động hơi khác nhau nhưng tất cả đều phục vụ mục đích chung là xếp hạng dữ liệu dựa trên các điều kiện cụ thể. RANK()DENSE_RANK() các hàm có hành vi tương tự ở chỗ chúng gán cùng thứ hạng cho các hàng có giá trị giống hệt nhau. Sự khác biệt quan trọng nằm ở cách họ xử lý thứ hạng tiếp theo. RANK() bỏ qua thứ hạng tiếp theo trong khi DENSE_RANK() không làm.

Mặt khác, ROW_NUMBER() hàm gán một số hàng duy nhất cho mỗi hàng bất kể thứ tự các giá trị cột có giống nhau hay không. Trong khi RANK(), DENSE_RANK()ROW_NUMBER() Nhìn thoáng qua có vẻ có thể thay thế cho nhau, nhưng hiểu được sắc thái của chúng là điều then chốt để phân tích dữ liệu hiệu quả trong SQL. Việc lựa chọn giữa các chức năng này có thể tác động đáng kể đến kết quả và thông tin chi tiết thu được từ dữ liệu của bạn.

DENSE_RANK() là một hàm xếp hạng mạnh mẽ trong SQL gán một giá trị xếp hạng duy nhất trong một phân vùng được chỉ định. Trong mấu chốt, DENSE_RANK() cung cấp thứ hạng không có khoảng cách cho dữ liệu của bạn, nghĩa là mỗi giá trị duy nhất được xếp hạng riêng biệt và các giá trị giống hệt nhau sẽ nhận được cùng thứ hạng. Không giống như đối tác của nó RANK(), DENSE_RANK() không bỏ qua bất kỳ cấp bậc nào nếu có sự ràng buộc giữa các giá trị.

Để chia nhỏ nó, hãy hình dung một tình huống trong đó bạn có một tập dữ liệu về điểm số của học sinh và ba học sinh có cùng số điểm, chẳng hạn như 85 điểm. sử dụng RANK(), cả ba học sinh sẽ nhận được hạng 1, nhưng người có điểm cao nhất tiếp theo sẽ xếp hạng 4, bỏ qua hạng 2 và 3. Tuy nhiên, DENSE_RANK() xử lý việc này một cách khác nhau. Nó sẽ ấn định thứ hạng 1 cho cả ba học sinh, và người có điểm tốt nhất tiếp theo sẽ nhận được thứ hạng 2, đảm bảo không có khoảng cách trong thứ hạng.

Vậy khi nào nên sử dụng DENSE_RANK()? Nó đặc biệt hữu ích trong các tình huống mà bạn yêu cầu xếp hạng liên tục mà không có bất kỳ khoảng trống nào. Hãy xem xét một trường hợp sử dụng trong đó bạn cần trao giải cho ba người có thành tích xuất sắc nhất. Nếu bạn có mối quan hệ trong dữ liệu của mình, hãy sử dụng RANK() có thể khiến bạn bỏ lỡ cơ hội trao giải cho một ứng viên xứng đáng. Đó là khi nào DENSE_RANK() đến giải cứu, đảm bảo tất cả những người ghi bàn hàng đầu đều được công nhận xứng đáng và thứ hạng không bị bỏ qua.

Hiểu được sự khác biệt giữa DENSE_RANK(), RANK()ROW_NUMBER() là điều cần thiết để phân tích dữ liệu hiệu quả trong SQL. Cả ba chức năng đều có tác dụng mạnh mẽ nhưng sự khác biệt tinh tế của chúng có thể tác động đáng kể đến kết quả phân tích dữ liệu của bạn.

Hãy bắt đầu với RANK(). Hàm này chỉ định một thứ hạng duy nhất cho từng giá trị riêng biệt trong một tập dữ liệu, với cùng thứ hạng được gán cho các giá trị giống hệt nhau. Tuy nhiên, khi RANK() gặp điểm hòa (giá trị giống hệt nhau), nó sẽ bỏ qua (các) hạng tiếp theo trong chuỗi. Ví dụ: nếu bạn có ba sản phẩm có cùng số liệu bán hàng, RANK() sẽ chỉ định cùng một thứ hạng cho từng sản phẩm này nhưng sau đó sẽ bỏ qua thứ hạng tiếp theo. Điều này có nghĩa là nếu ba sản phẩm này là sản phẩm bán chạy nhất thì chúng đều sẽ được xếp hạng 1, nhưng sản phẩm bán chạy tiếp theo sẽ được xếp hạng 4 chứ không phải xếp hạng 2.

Tiếp theo, chúng ta hãy xem xét DENSE_RANK(). Tương tự như RANK(), DENSE_RANK() gán cùng một thứ hạng cho các giá trị giống hệt nhau, nhưng nó không bỏ qua bất kỳ thứ hạng nào. Sử dụng ví dụ trước, với DENSE_RANK(), ba sản phẩm bán chạy nhất vẫn sẽ được xếp hạng 1, nhưng sản phẩm bán chạy tiếp theo sẽ được xếp hạng 2 chứ không phải xếp hạng 4.

Ngoài ra, thẻ cào ROW_NUMBER() có một cách tiếp cận khác. Nó gán một thứ hạng duy nhất cho mỗi hàng, bất kể các giá trị có giống nhau hay không. Điều này có nghĩa là ngay cả khi ba sản phẩm có cùng số liệu bán hàng, ROW_NUMBER() sẽ chỉ định một số duy nhất cho mỗi hàng, giúp nó trở nên hoàn hảo trong các trường hợp bạn cần chỉ định một mã định danh riêng biệt cho mỗi hàng.

Cú pháp của DENSE_RANK() là đơn giản. Nó được sử dụng kết hợp với OVER() mệnh đề, phân vùng dữ liệu trước khi xếp hạng. Cú pháp như sau: DENSE_RANK() OVER (ORDER BY column). Đây, column đề cập đến cột mà bạn muốn xếp hạng dữ liệu của mình. Hãy xem xét một ví dụ trong đó chúng ta có một bảng có tên Sales với các cột SalesPersonSalesFigures. Để xếp hạng nhân viên bán hàng theo số liệu bán hàng của họ, chúng tôi sẽ sử dụng DENSE_RANK() chức năng như sau: DENSE_RANK() OVER (ORDER BY SalesFigures DESC). Truy vấn SQL này sẽ xếp hạng nhân viên bán hàng từ cao nhất đến thấp nhất dựa trên số liệu bán hàng của họ.

Sử dụng DENSE_RANK() kết hợp với PARTITION BY có thể đặc biệt sâu sắc. Ví dụ: nếu bạn muốn xếp hạng nhân viên bán hàng trong từng khu vực, bạn có thể phân vùng dữ liệu của mình theo Region và sau đó xếp hạng trong mỗi phân vùng. Cú pháp cho việc này sẽ là DENSE_RANK() OVER (PARTITION BY Region ORDER BY SalesFigures DESC). Bằng cách này, bạn không chỉ nhận được thứ hạng toàn diện mà còn có được sự hiểu biết sâu sắc về hiệu suất trong từng khu vực.

Câu hỏi SQL của Apple: Tìm những người có doanh số bán hàng tốt nhất cho mỗi ngày bán hàng

Bảng: dữ liệu bán hàng

+------------+-----------+------------+
|employee_id | sales_date| total_sales|
+------------+-----------+------------+
|101         |2024-01-01 |500         |
|102         |2024-01-01 |700         |
|103         |2024-01-01 |600         |
|101         |2024-01-02 |800         |
|102         |2024-01-02 |750         |
|103         |2024-01-02 |900         |
|101         |2024-01-03 |600         |
|102         |2024-01-03 |850         |
|103         |2024-01-03 |700         |
+------------+-----------+------------+

 

Đầu ra

+------------+-----------+------------+
|employee_id | sales_date| total_sales|
+------------+-----------+------------+
|101         |2024-01-01 |800         |
|103         |2024-01-02 |900         |
|102         |2024-01-03 |850         |
+------------+-----------+------------+

Giải pháp thực hiện bán hàng hàng đầu của Apple

Bước 1: Tìm hiểu dữ liệu

Trước tiên, hãy tìm hiểu dữ liệu trong bảng sales_data. Nó có ba cột: member_id, sales_date và Total_sale. Bảng này thể hiện dữ liệu bán hàng với thông tin về nhân viên, ngày bán hàng và tổng số tiền bán hàng.

Bước 2: Phân tích hàm DENSE_RANK()

Truy vấn sử dụng hàm cửa sổ DENSE_RANK() để xếp hạng nhân viên dựa trên tổng doanh số bán hàng của họ trong mỗi phân vùng ngày bán hàng. DENSE_RANK() được sử dụng để gán thứ hạng cho mỗi hàng trong phân vùng của sales_date, với thứ tự dựa trên tổng_doanh số theo thứ tự giảm dần.

Bước 3: Chia nhỏ cấu trúc truy vấn

Bây giờ, hãy chia nhỏ cấu trúc của truy vấn:

SELECT 
  employee_id, 
  sales_date, 
  total_sales 
FROM 
  (
    SELECT 
      employee_id, 
      sales_date, 
      total_sales, 
      DENSE_RANK() OVER (
        PARTITION BY sales_date 
        ORDER BY 
          total_sales DESC
      ) AS sales_rank 
    FROM 
      sales_data
  ) ranked_sales 
WHERE 
  sales_rank = 1;

 

  • Mệnh đề SELECT: Điều này chỉ định các cột sẽ được đưa vào kết quả cuối cùng. Trong trường hợp này, đó là ID_nhân viên, ngày_bán hàng và tổng_doanh số.
  • Điều khoản FROM: Đây là nơi lấy dữ liệu thực tế. Nó bao gồm một truy vấn con (được đặt trong dấu ngoặc đơn) để chọn các cột từ bảng sales_data và thêm cột được tính toán bằng cách sử dụng DENSE_RANK().
  • Hàm DENSE_RANK(): Hàm này được sử dụng trong truy vấn con để gán thứ hạng cho mỗi hàng dựa trên cột tổng_bán hàng và được phân chia theo ngày_bán hàng. Điều này có nghĩa là việc xếp hạng được thực hiện riêng cho từng ngày bán hàng.
  • Mệnh đề WHERE: Điều này lọc kết quả để chỉ bao gồm các hàng có sales_rank bằng 1. Điều này đảm bảo rằng chỉ người có doanh số bán hàng cao nhất cho mỗi ngày bán hàng mới được đưa vào kết quả cuối cùng.

Bước 4: Thực hiện truy vấn

Khi bạn thực hiện truy vấn này, nó sẽ tạo ra một tập kết quả bao gồm member_id, sales_date và Total_sale cho người có doanh số bán hàng cao nhất vào mỗi ngày bán hàng.

Bước 5: Xem lại đầu ra

Bảng đầu ra cuối cùng, có tên top_performers, sẽ chứa thông tin mong muốn: người có doanh số bán hàng cao nhất cho mỗi ngày bán hàng, dựa trên phép tính DENSE_RANK()

Câu hỏi Google SQL: Đối với mỗi sản phẩm, hãy tìm khách hàng đã cung cấp điểm đánh giá cao nhất

Bảng: đánh giá sản phẩm

+------------+-----------+-------------+-------------------------------+
|customer_id | product_id| review_date | review_score | helpful_votes  |
+------------+-----------+-------------+--------------+----------------+
|301         |101        |2024-04-01   |4.5           | 12             |
|302         |102        |2024-04-01   |3.8           | 8              |
|303         |103        |2024-04-01   |4.2           | 10             |
|301         |101        |2024-04-02   |4.8           | 15             |
|302         |102        |2024-04-02   |3.5           | 7              |
|303         |103        |2024-04-02   |4.0           | 11             |
|301         |101        |2024-04-03   |4.2           | 13             |
|302         |102        |2024-04-03   |4.0           | 10             |
|303         |103        |2024-04-03   |4.5           | 14             |
+------------+-----------+-------------+--------------+----------------+

 

Đầu ra

+------------+-----------+-------------+--------------+----------------+
|customer_id | product_id| review_date | review_score | helpful_votes  |
+------------+-----------+-------------+--------------+----------------+
|301         |101        |2024-04-01   |4.5           | 12             |
|301         |101        |2024-04-02   |4.8           | 15             |
|303         |103        |2024-04-03   |4.5           | 14             |
+------------+-----------+-------------+--------------+----------------+

Giải pháp Điểm đánh giá cao nhất của Google

Bước 1: Tìm hiểu dữ liệu

Bảng Product_reviews chứa thông tin về đánh giá của khách hàng đối với các sản phẩm khác nhau. Nó bao gồm các cột như customer_id, Product_id, review_date, review_score và help_votes. Bảng này trình bày dữ liệu liên quan đến đánh giá của khách hàng, với thông tin chi tiết về khách hàng, sản phẩm đang được đánh giá, ngày đánh giá, điểm đánh giá và số phiếu bầu hữu ích nhận được.

Bước 2: Phân tích hàm DENSE_RANK()

Trong truy vấn này, hàm cửa sổ DENSE_RANK() được sử dụng để xếp hạng các hàng trong mỗi phân vùng được xác định bởi Product_id và review_date. Thứ hạng được xác định dựa trên hai tiêu chí: review_score theo thứ tự giảm dần và help_votes theo thứ tự giảm dần. Điều này có nghĩa là các hàng có điểm đánh giá cao hơn và số phiếu bầu hữu ích nhiều hơn sẽ được xếp hạng thấp hơn.

Bước 3: Chia nhỏ cấu trúc truy vấn

Bây giờ, hãy chia nhỏ cấu trúc của truy vấn:

SELECT 
  customer_id, 
  product_id, 
  review_date, 
  review_score, 
  helpful_votes 
FROM 
  (
    SELECT 
      customer_id, 
      product_id, 
      review_date, 
      review_score, 
      helpful_votes, 
      DENSE_RANK() OVER (
        PARTITION BY product_id, 
        review_date 
        ORDER BY 
          review_score DESC, 
          helpful_votes DESC
      ) AS rank_within_product 
    FROM 
      product_reviews
  ) ranked_reviews 
WHERE 
  rank_within_product = 1;

 

  • Mệnh đề SELECT: Chỉ định các cột sẽ được đưa vào kết quả cuối cùng. Nó bao gồm customer_id, Product_id, review_date, review_score và hữu ích_votes.
  • Mệnh đề FROM: Phần này bao gồm một truy vấn con (được đặt trong dấu ngoặc đơn) để chọn các cột từ bảng Product_reviews và thêm cột được tính toán bằng cách sử dụng DENSE_RANK(). Việc tính toán được thực hiện trên một phân vùng được xác định bởi id_id và ngày đánh giá, đồng thời xếp hạng dựa trên cả điểm đánh giá và phiếu bầu hữu ích theo thứ tự giảm dần.
  • Hàm DENSE_RANK(): Hàm này được áp dụng trong truy vấn con để gán thứ hạng cho mỗi hàng dựa trên tiêu chí đã chỉ định. Việc xếp hạng được thực hiện riêng biệt cho từng kết hợp của id_sản phẩm và ngày đánh giá.
  • Mệnh đề WHERE: Lọc kết quả để chỉ bao gồm các hàng có xếp hạng_within_product bằng 1. Điều này đảm bảo rằng chỉ hàng được xếp hạng cao nhất cho mỗi sản phẩm vào mỗi ngày xem xét mới được đưa vào kết quả cuối cùng.

Bước 4: Thực hiện truy vấn

Việc thực hiện truy vấn này sẽ tạo ra một tập kết quả chứa thông tin mong muốn: customer_id, Product_id, review_date, review_score và help_votes cho bài đánh giá được xếp hạng cao nhất dựa trên cả điểm đánh giá và phiếu bầu hữu ích trong mỗi kết hợp sản phẩm và ngày đánh giá.

Bước 5: Xem lại đầu ra

Bảng đầu ra cuối cùng, có tên top_reviewers, sẽ hiển thị các bài đánh giá được xếp hạng cao nhất cho từng sản phẩm vào mỗi ngày đánh giá, xem xét cả điểm đánh giá và số phiếu bầu hữu ích.

Trong khi DENSE_RANK() là một hàm rất hữu ích trong SQL nên không hiếm trường hợp các nhà phân tích, đặc biệt là những người mới làm quen với SQL, mắc lỗi khi sử dụng nó. Chúng ta hãy xem xét kỹ hơn một số lỗi phổ biến này và cách tránh chúng.

Một sai lầm phổ biến là hiểu sai cách DENSE_RANK() xử lý các giá trị null. Không giống như một số hàm SQL, DENSE_RANK() coi tất cả các NULL là giống hệt nhau. Điều này có nghĩa là nếu bạn đang xếp hạng dữ liệu có một số giá trị là NULL, DENSE_RANK() sẽ gán cùng thứ hạng cho tất cả các giá trị NULL. Hãy lưu ý điều này khi làm việc với các tập dữ liệu chứa giá trị NULL và cân nhắc việc thay thế NULL bằng một giá trị thể hiện ý nghĩa của chúng trong ngữ cảnh của bạn hoặc loại trừ chúng tùy thuộc vào yêu cầu cụ thể của bạn.

Một lỗi thường gặp khác là bỏ qua tầm quan trọng của việc phân vùng khi sử dụng DENSE_RANK(). Mệnh đề `PARTITION BY` cho phép bạn chia dữ liệu của mình thành các phân đoạn riêng biệt và thực hiện xếp hạng trong các phân vùng này. Việc bỏ qua việc sử dụng `PARTITION BY` có thể dẫn đến kết quả sai, đặc biệt khi bạn muốn xếp hạng khởi động lại cho các danh mục hoặc nhóm khác nhau.

Liên quan đến vấn đề này là việc sử dụng không đúng cách ORDER BY mệnh đề với DENSE_RANK(). DENSE_RANK() gán thứ hạng theo thứ tự tăng dần theo mặc định, nghĩa là giá trị nhỏ nhất sẽ có thứ hạng 1. Nếu bạn cần xếp hạng theo thứ tự giảm dần, bạn phải bao gồm từ khóa `DESC` trong ORDER BY khoản. Nếu không làm như vậy sẽ tạo ra thứ hạng có thể không phù hợp với mong đợi của bạn.

Cuối cùng, một số nhà phân tích sử dụng nhầm DENSE_RANK() Ở đâu ROW_NUMBER() or RANK() có thể phù hợp hơn và ngược lại. Như chúng ta đã thảo luận, cả ba chức năng này đều có hành vi riêng. Hiểu những sắc thái này và chọn chức năng chính xác cho trường hợp sử dụng cụ thể của bạn là rất quan trọng để tiến hành phân tích dữ liệu chính xác và hiệu quả.

Cách làm chủ DENSE_RANK() nâng cao khả năng phân tích dữ liệu hiệu quả trong SQL

Làm chủ việc sử dụng DENSE_RANK() có thể nâng cao đáng kể hiệu quả phân tích dữ liệu trong SQL, đặc biệt khi liên quan đến việc xếp hạng và so sánh. Hàm này cung cấp một cách tiếp cận đa sắc thái để xếp hạng, một cách tiếp cận duy trì tính liên tục trong thang xếp hạng bằng cách gán cùng một thứ hạng cho các giá trị giống hệt nhau mà không bỏ qua bất kỳ số thứ hạng nào.

Điều này đặc biệt hữu ích trong việc phân tích các tập dữ liệu lớn, trong đó các điểm dữ liệu thường có thể chia sẻ các giá trị giống hệt nhau. Ví dụ: trong tập dữ liệu bán hàng, nhiều nhân viên bán hàng có thể đạt được số liệu bán hàng như nhau. DENSE_RANK() cho phép xếp hạng công bằng, trong đó mỗi nhân viên bán hàng này được xếp hạng như nhau. Ngoài ra, việc sử dụng DENSE_RANK() kết hợp với `PARTITION BY` cho phép phân tích tập trung, theo danh mục cụ thể.

Ứng dụng của hàm này càng trở nên mạnh mẽ hơn khi xử lý các giá trị null. Thay vì loại trừ những thứ này khỏi quá trình xếp hạng, DENSE_RANK() coi tất cả các giá trị rỗng là giống hệt nhau và gán cho chúng cùng một thứ hạng. Điều này đảm bảo rằng mặc dù có thể thiếu các giá trị chính xác nhưng các điểm dữ liệu không bị bỏ qua, từ đó cung cấp phân tích toàn diện hơn.

Để nâng cao kỹ năng SQL của bạn, chúng tôi khuyên bạn nên thực hành trực tuyến trên các nền tảng như BigTechInterviews, Leetcode hoặc các trang web tương tự.

DENSE_RANK() làm gì trong SQL?

DENSE_RANK() là một hàm cửa sổ SQL gán thứ hạng cho các hàng dữ liệu dựa trên một cột được chỉ định. Nó xử lý các mối quan hệ bằng cách cho chúng cùng thứ hạng mà không để lại bất kỳ khoảng trống nào trong chuỗi xếp hạng.

Sự khác biệt giữa RANK(), ROW_NUMBER() và DENSE_RANK() trong SQL là gì?

RANK() và ROW_NUMBER() chỉ định thứ hạng cho dữ liệu nhưng chúng xử lý các mối quan hệ khác nhau. RANK() để lại những khoảng trống trong xếp hạng cho dữ liệu bị ràng buộc, trong khi ROW_NUMBER() chỉ định một số duy nhất cho mỗi hàng mà không xem xét các mối quan hệ. Mặt khác, DENSE_RANK() chỉ định các thứ hạng giống hệt nhau cho các điểm dữ liệu gắn liền mà không có bất kỳ khoảng trống nào.

Làm cách nào để sử dụng DENSE_RANK() trong mệnh đề WHERE trong SQL?

DENSE_RANK() là một hàm cửa sổ và không thể sử dụng trực tiếp trong mệnh đề WHERE. Thay vào đó, nó có thể được sử dụng kết hợp với các hàm khác như ROW_NUMBER() hoặc RANK(), sau đó có thể được sử dụng trong mệnh đề WHERE để lọc dữ liệu dựa trên thứ hạng.

Có thể sử dụng DENSE_RANK() mà không cần PARTITION BY không?

Không, việc chỉ định THAM GIA THEO là rất quan trọng để DENSE_RANK() hoạt động bình thường. Nếu không có nó, tất cả dữ liệu sẽ được coi là một nhóm, dẫn đến xếp hạng không chính xác và vô nghĩa. Nắm vững cách sử dụng DENSE_RANK() trong SQL có thể nâng cao đáng kể kỹ năng phân tích dữ liệu của bạn.

Sự khác biệt giữa RANK() và DENSE_RANK() là gì?

Sự khác biệt chính giữa RANK() và DENSE_RANK() nằm ở cách chúng xử lý các mối quan hệ. Trong khi RANK() để lại những khoảng trống trong xếp hạng cho dữ liệu bị ràng buộc, DENSE_RANK() chỉ định thứ hạng giống hệt nhau cho các điểm dữ liệu bị ràng buộc mà không có bất kỳ khoảng trống nào. Ngoài ra, RANK() luôn tăng số thứ hạng lên 1 cho mỗi hàng mới, trong khi DENSE_RANK() duy trì thứ hạng liên tục.
 
 

John Hughes từng là Nhà phân tích dữ liệu tại Uber và trở thành người sáng lập nền tảng học tập SQL có tên BigTechInterviews (BTI). Anh ấy đam mê học các ngôn ngữ lập trình mới và giúp các ứng viên có được sự tự tin cũng như kỹ năng để vượt qua các cuộc phỏng vấn kỹ thuật của họ. Anh ấy gọi Denver, CO về nhà.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img