Group by rollup trong SQL server

Trong bài viết này, Comdy sẽ giúp thích chi tiết về câu lệnh group by rollup trong SQL server đi kèm với những ví dụ minh chứng cụ thể. Cùng theo dõi bài viết để rõ hơn về mệnh đề này nhé.

Giới thiệu về rollup trong SQL Server

Giới thiệu về rollup trong SQL Server
ROLLUP trong SQL Server là một mệnh đề con của mệnh đề GROUP BY

Rollup là gì? ROLLUP trong SQL Server là một mệnh đề con của mệnh đề GROUP BY cung cấp cách viết tắt để xác định nhiều GROUPING SETS. Không giống như CUBE – tạo các tập nhóm với tất cả các kết hợp của các cột. ROLLUP không tạo tất cả các tập hợp nhóm có thể dựa trên các cột thứ nguyên.

Khi tạo các tập hợp nhóm, sql rollup giả định một hệ thống phân cấp giữa các cột thứ nguyên và chỉ tạo các tập hợp nhóm dựa trên hệ thống phân cấp này.

ROLLUP thường được sử dụng để tạo ra tổng số phụ (subtotals) và tổng số (totals) cho mục đích báo cáo.

Hãy xem xét ví dụ sau đây: mệnh đề CUBE (d1,d2,d3) sẽ xác định tám tập hợp nhóm như sau:

(d1, d2, d3)
(d1, d2)
(d2, d3)
(d1, d3)
(d1)
(d2)
(d3)
()

Nhưng mệnh đề sql rollup(d1,d2,d3) chỉ tạo ra bốn tập hợp nhóm (giả sử phân cấp d1 > d2 > d3) như sau:

(d1, d2, d3)
(d1, d2)
(d1)
()

Mệnh đề ROLLUP thường được sử dụng để tính toán tổng hợp của dữ liệu phân cấp như bán hàng theo năm > quý > tháng.

Cú pháp của rollup trong SQL Server

How to use rollup in sql server? Để sử dụng roll up in sqlm, chúng ta sẽ sử dụng cú pháp chung của rollup SQL Server như sau:

SELECT
    d1,
    d2,
    d3,
    aggregate_function(c4)
FROM
    table_name
GROUP BY
    ROLLUP (d1, d2, d3);

Trong cú pháp này, d1, d2 và d3 là các cột thứ nguyên. Câu lệnh sẽ tính tổng các giá trị trong cột c4 dựa trên thứ bậc d1> d2> d3.

Bạn cũng có thể ROLLUP một phần để giảm tổng số phụ (subtotals) được tạo bằng cách sử dụng cú pháp sau:

SELECT
    d1,
    d2,
    d3,
    aggregate_function(c4)
FROM
    table_name
GROUP BY
    d1, 
    ROLLUP (d2, d3);

Ví dụ về rollup trong SQL Server

Ví dụ về rollup trong SQL Server
Lấy ví dụ cụ thể về câu lệnh rollup trong SQL Server

Chúng ta sẽ sử dụng lại bảng sales.sales_summary trong cơ sở dữ liệu mẫu BikeStores đã tạo trong phần hướng dẫn về GROUPING SETS để minh họa. Nếu bạn chưa tạo bảng sales.sales_summary, bạn có thể sử dụng câu lệnh sau để tạo bảng.

SELECT
    b.brand_name AS brand,
    c.category_name AS category,
    p.model_year,
    round(
        SUM (
            quantity * i.list_price * (1 - discount)
        ),
        0
    ) sales INTO sales.sales_summary
FROM
    sales.order_items i
INNER JOIN production.products p ON p.product_id = i.product_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
INNER JOIN production.categories c ON c.category_id = p.category_id
GROUP BY
    b.brand_name,
    c.category_name,
    p.model_year
ORDER BY
    b.brand_name,
    c.category_name,
    p.model_year;

Truy vấn sau đây sử dụng ROLLUP để tính toán số tiền bán hàng theo thương hiệu (tổng số phụ – subtotals) và cả thương hiệu và danh mục (tổng số – totals).

SELECT
    brand,
    category,
    SUM (sales) sales
FROM
    sales.sales_summary
GROUP BY
    ROLLUP(brand, category);

Trong ví dụ này, truy vấn giả định rằng có một hệ thống phân cấp giữa thương hiệu và danh mục, đó là thương hiệu > danh mục.

Lưu ý rằng nếu bạn thay đổi thứ tự của thương hiệu và danh mục, kết quả sẽ khác như được hiển thị trong truy vấn sau:

SELECT
    category,
    brand,
    SUM (sales) sales
FROM
    sales.sales_summary
GROUP BY
    ROLLUP (category, brand);

Câu lệnh sau cho biết cách thực hiện ROLLUP một phần:

SELECT
    brand,
    category,
    SUM (sales) sales
FROM
    sales.sales_summary
GROUP BY
    brand,
    ROLLUP (category);

Câu lệnh with rollup SQL server được dùng để làm gì?

Câu lệnh with rollup SQL server dùng làm gì
Khi sử dụng with rollup in sql, các bản ghi tổng hợp sẽ được thêm vào kết quả truy vấn, đại diện cho một mức tổng hợp cao hơn của dữ liệu

Câu lệnh  group by trong sql hay with rollup trong sql được sử dụng để tạo báo cáo tổng hợp (summary report) bao gồm các bản ghi tổng hợp (summary records) dựa trên các cột được chỉ định trong câu lệnh GROUP BY.

Khi sử dụng with rollup in sql, các bản ghi tổng hợp sẽ được thêm vào kết quả truy vấn, đại diện cho một mức tổng hợp cao hơn của dữ liệu. Nó tạo ra các tổng hợp phụ trên các cột được chỉ định trong câu lệnh GROUP BY.

Ví dụ:

SELECT Category, Product, SUM(Quantity) AS TotalQuantity
FROM Orders
GROUP BY Category, Product WITH ROLLUP;

Kết quả của ví dụ về group by rollup sql trên bao gồm các bản ghi tổng hợp cho từng “Category” và “Product”, cùng với tổng hợp phụ cho từng “Category” và tổng hợp chung cho toàn bộ dữ liệu.

Grouping sets trong SQL là gì?

Grouping được dùng để phân biệt các giá trị NULL được trả về bởi rollup in sql, cube hay là grouping sets với các giá trị NULL tiêu chuẩn. Giá trị NULL được trả về dựa vào hoạt động của rollup, cube hay là grouping sets chính là một cách sử dụng đặc biệt của NULL. Điều này hoạt động giống như một trình giữ cột trong tập kết quả và có ý nghĩa là tất cả.

Except trong SQL là gì?

Except trong SQL là gì
Except trong SQL trả về các bản ghi duy nhất từ tập hợp đầu tiên và không có trong tập hợp thứ hai
Từ khóa “EXCEPT” trong SQL server được sử dụng để truy vấn các bản ghi có trong một tập hợp dữ liệu (query result) nhưng không có trong một tập hợp dữ liệu khác. Nó trả về các bản ghi duy nhất từ tập hợp đầu tiên và không có trong tập hợp thứ hai. Cú pháp như sau:

SELECT column1, column2, …
FROM table1
EXCEPT
SELECT column1, column2, …
FROM table2;

Cách sử dụng rollup SQL oracle

Trong Oracle SQL, bạn có thể sử dụng câu lệnh ROLLUP để tạo báo cáo tổng hợp (summary report) với các tổng hợp phụ và tổng hợp chung cho các cấp độ khác nhau của dữ liệu. ROLLUP được sử dụng trong câu lệnh SELECT và GROUP BY để chỉ định các cột bạn muốn nhóm theo và tạo các cấp độ tổng hợp.

SELECT column1, column2, …, aggregate_function(column)
FROM table
GROUP BY ROLLUP (column1, column2, …);

Trong câu lệnh trên, bạn chỉ định các cột muốn nhóm theo trong phần GROUP BY và sử dụng ROLLUP để tạo các cấp độ tổng hợp.

Group by SQL là gì?

Group by SQL là gì
GROUP BY thường được sử dụng kết hợp với các phép tổng hợp như SUM, AVG, COUNT, MAX, MIN, v.v.

Group by trong sql hay group by trong mysql là một cụm từ sử dụng trong câu lệnh SELECT để nhóm các hàng dữ liệu dựa trên giá trị của một hoặc nhiều cột và áp dụng các phép tổng hợp lên các nhóm này. GROUP BY thường được sử dụng kết hợp với các phép tổng hợp như SUM, AVG, COUNT, MAX, MIN, v.v.

Cú pháp:

SELECT column1, column2, …, aggregate_function(column)
FROM table
GROUP BY column1, column2, …;

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy để giúp bạn hiểu sâu hơn về rollup trong sql server. Hi vọng thông tin trong bài viết này là bổ ích và ý nghĩa đối với mọi người. Xin cám ơn vì đã theo dõi, ủng hộ bài viết.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *