CUBE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng CUBE trong SQL Server để tạo nhiều tập nhóm.

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

GROUPING SETS định nghĩa các nhóm dữ liệu trong một truy vấn. Ví dụ: truy vấn sau định nghĩa một tập nhóm duy nhất được ký hiệu là (brand):

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

Nếu bạn chưa làm theo hướng dẫn GROUPING SETS, bạn có thể tạo bảng sales.sales_summary bằng cách sử dụng truy vấn sau:

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;

Ngay cả khi truy vấn sau không sử dụng mệnh đề GROUP BY, nó tạo ra một tập hợp nhóm trống được ký hiệu là ().

SELECT 
    SUM(sales)
FROM 
    sales.sales_summary;

CUBE là một mệnh đề con của mệnh đề GROUP BY cho phép bạn tạo nhiều nhóm. Sau đây minh họa cú pháp chung của CUBE:

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

Trong cú pháp này, hàm CUBE tạo tất cả các nhóm có thể dựa trên các cột d1, d2 và d3 mà bạn chỉ định trong mệnh đề CUBE.

Truy vấn trên trả về cùng một tập hợp kết quả như truy vấn sau, sử dụng hàm   GROUPING SETS:

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

Nếu bạn có N cột được chỉ định trong CUBE, bạn sẽ có 2 N tập nhóm kết quả.

Có thể giảm số lượng  tập nhóm kết quả bằng cách sử dụng CUBE một phần như được hiển thị trong truy vấn sau:

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

Trong trường hợp này, truy vấn tạo ra bốn tập hợp nhóm vì chỉ có hai cột được chỉ định trong CUBE.

Ví dụ về CUBE trong SQL Server

Câu lệnh sau sử dụng CUBE để tạo bốn tập nhóm:

  1. (brand, category)
  2. (brand)
  3. (category)
  4. ()
SELECT
    brand,
    category,
    SUM (sales) sales
FROM
    sales.sales_summary
GROUP BY
    CUBE(brand, category);

Đây là kết quả đầu ra:

CUBE trong SQL Server

Trong ví dụ này, chúng tôi có hai cột được chỉ định trong mệnh đề CUBE, do đó chúng tôi có tổng cộng bốn tập hợp nhóm kết quả.

Ví dụ sau minh họa cách thực hiện CUBE một phần để giảm số lượng tập nhóm kết quả được tạo bởi truy vấn:

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

Hình ảnh sau đây cho thấy đầu ra:

CUBE trong SQL Server

Trong hướng dẫn này, bạn đã học cách sử dụng CUBE trong SQL Server để tạo nhiều tập nhóm.

SQL ServerGroup By
Bài Viết Liên Quan:
Sequence trong SQL Server
Trung Nguyen 31/07/2021
Sequence trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về các đối tượng Sequence trong SQL Server để tạo ra một chuỗi các giá trị số dựa trên một đặc tả cụ thể.

Cột Identity trong SQL Server
Trung Nguyen 30/07/2021
Cột Identity trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng thuộc tính IDENTITY trong SQL Server để thêm cột định danh vào bảng.

CREATE TABLE trong SQL Server
Trung Nguyen 29/07/2021
CREATE TABLE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh CREATE TABLE trong SQL Server để tạo một bảng mới.

Ràng buộc NOT NULL trong SQL Server
Trung Nguyen 28/07/2021
Ràng buộc NOT NULL trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng ràng buộc NOT NULL trong SQL Server để đảm bảo một cột không chứa dữ liệu NULL.