[DATABASE] Hướng dẫn truy vấn lấy Top N dữ liệu trên sqlserver
Xin chào các bạn bài viết hôm nay, mình chia sẻ các bạn cách thực hiện truy vấn lấy Top N số dòng và tất cả dữ liệu còn lại sẽ đưa vào Other để vẽ biểu đồ báo cáo.
[DATABASE] Calculating Top N Items and Aggregating (sum) the remainder into All Other
Ví dụ: chúng ta có bảng dữ liệu như sau:
Ở hình trên, các bạn thấy dữ liệu mình gồm 20 trường dữ liệu:
Nếu bây giờ, chúng ta trình bày hết chúng vào 1 biểu đồ hình tròn thì rất khó nhìn.
Và yêu cầu ở đây, là ví dụ Sếp chỉ muốn nhìn thấy 5 hoặc N giá trị lớn nhất, còn tất cả giá trị còn lại đưa vào dữ liệu "All Others".
Chúng ta sẽ thực hiện truy vấn dữ liệu như sau:
WITH TopX
AS (SELECT TOP 10 -- Thay đổi xem số lượng ở đây
name,
qty
FROM dbo.Product
ORDER BY qty DESC)
SELECT *
FROM TopX
UNION ALL
SELECT 'All other' AS name,
SUM(qty) AS qty
FROM Product
WHERE name NOT IN
(
SELECT name FROM TopX
);
Ở lệnh trên, mình chỉ xuất hiện 10 dòng, các bạn có thể thay đổi số item muốn view ở đoạn comment, mình đã ghi chú lại ở trên.
Kết quả của truy vấn trên chúng ta sẽ được dữ liệu như ở bên dưới đây:
Thanks for watching!