- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
- [C#] Thiết lập dấu (,) hay dấu (.) ở định dạng số đúng với định dạng số Việt Nam
- [C#] Chia sẻ source code Game Spin Lucky Wheel
- [C#] Hướng dẫn Encode and Decode HTML
- Hướng dẫn tạo tài khoản Chat Open AI GPT tại Việt Nam
- [C#] Hướng dẫn thay đổi giao diện ứng dụng Winform theo giao diện của Windows
- [VB.NET] Hiệu ứng Acrylic, Mica, Tabbed Blur Effect trên Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên Combobox Edit
- [C#] Chia sẻ source code Orange Rain in Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên XtraMessageBox Winform Devexpress 22.2.3
- [DEVEXPRESS] Hướng dẫn sử dụng HTML and CSS Code Viewer trên Winform
- [C#] Number Effect Counter up and down in winform
- [C#] Hướng dẫn Supend and Resume Process ID in Winform
- [C#] Hiển thị line number trên Richtextbox Winform
- [C#] Fake Blue Screen BSOD in winform
- [C#] Chia sẽ code demo sử dụng Async Parallel Foreach and For in Winform
- [C#] Sử dụng ActionBlock run X task at time winform
- [C#] Hướng dẫn sử dụng Property Grid để lưu và tải lại thông tin cấu hình user trên winform
- [C#] Hướng dẫn bắt sự kiện khi đối tượng di chuyển chạm vào object trên winform HitTest Object
- [SQLSERVER] Sử dụng GROUP BY và ROLLUP, CUBE để thống kê dữ liệu
[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!