Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL CUBE Clauses

The `CUBE` clause in MySQL is used in conjunction with the `GROUP BY` clause to generate subtotals and grand totals across multiple dimensions in a single query. It simplifies the process of generating reports by allowing for comprehensive aggregation of data.

Usage

The `CUBE` clause is particularly useful in data warehousing and reporting scenarios where you need to perform multi-dimensional analysis. It creates a grouping set for each combination of values in the specified columns, including all possible aggregations.


SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY CUBE (column1, column2, ...);

In this syntax, `CUBE (column1, column2, ...)` directs MySQL to generate all possible subtotal combinations for the listed columns.

Examples

1. Basic Cube Example


SELECT department, month, SUM(sales) AS total_sales
FROM sales_data
GROUP BY CUBE (department, month);

This example calculates the total sales for each department and month, including all subtotals and the grand total.

2. Cube with Additional Aggregation


SELECT region, product, AVG(profit) AS average_profit
FROM sales_data
GROUP BY CUBE (region, product);

Here, the query computes average profits for each `region` and `product`, providing all possible subtotal combinations.

3. Cube with Multiple Aggregates


SELECT category, year, SUM(revenue) AS total_revenue, COUNT(order_id) AS order_count
FROM sales_data
GROUP BY CUBE (category, year);

This example calculates both the sum of revenue and the count of orders for each `category` and `year`, including subtotals and the grand total.

Tips and Best Practices

  • Use with caution on large datasets. The `CUBE` operation can produce a high volume of results, which may impact performance.
  • Combine with `HAVING` for filtering. Use the `HAVING` clause to filter out specific aggregation results that are not needed.
  • Consider indexing. Ensure that columns used in the `CUBE` clause are properly indexed to optimize query performance.
  • Start simple. Begin with fewer dimensions to understand the results before adding complexity.
  • Be mindful of data volume. Large numbers of dimensions can result in exponential growth in the number of rows returned.
  • Visualize the output. The results of a `CUBE` operation include all possible combinations of the specified columns, which can help in understanding how subtotals are generated.
  • Verify compatibility. The use of `CUBE` is not supported in all versions of MySQL.
  • Explore alternatives. If performance issues or compatibility problems arise, consider using the `ROLLUP` function as an alternative for generating subtotals with fewer grouping sets.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free