Collections:
GROUPING() - Identifying Super-Aggregate Row
How to identify super-aggregate row in aggregation query result using the GROUPING() function?
✍: FYIcenter.com
GROUPING(exp) is a MySQL built-in function that
returns 1 if the given exp is rolled up to all values
in a super-aggregate row when the "GROUP BY exp WITH ROLLUP"
clause is used.
For example:
CREATE TABLE MyTable (name CHAR(8), size CHAR(8), quantity INTEGER);
INSERT INTO MyTable VALUES
('ball', 'small', 10),
('ball', 'large', 20),
('ball', NULL, 5),
('hoop', 'small', 15),
('hoop', 'large', 5),
('hoop', NULL, 3);
SELECT SUM(quantity), name, GROUPING(name), size, GROUPING(size)
FROM MyTable GROUP BY name, size WITH ROLLUP ORDER BY name, size;
-- +---------------+------+----------------+-------+----------------+
-- | SUM(quantity) | name | GROUPING(name) | size | GROUPING(size) |
-- +---------------+------+----------------+-------+----------------+
-- | 58 | NULL | 1 | NULL | 1 |
-- | 5 | ball | 0 | NULL | 0 |
-- | 35 | ball | 0 | NULL | 1 |
-- | 20 | ball | 0 | large | 0 |
-- | 10 | ball | 0 | small | 0 |
-- | 3 | hoop | 0 | NULL | 0 |
-- | 23 | hoop | 0 | NULL | 1 |
-- | 5 | hoop | 0 | large | 0 |
-- | 15 | hoop | 0 | small | 0 |
-- +---------------+------+----------------+-------+----------------+
Note that the SUM(quantity) value in the super-aggregate row is the super-sum of GROUP BY expressions being rolled up to all values.
Reference information of the GROUPING() function:
GROUPING(exp): int Returns 1, if the given exp is rolled up to all values in a super-aggregate row; otherwise 0. Arguments, return value and availability: exp: Required. The group by expression to be examined. int: Return value. 1, if exp is rolled up. Available since MySQL 4.0.
⇒ JSON_ARRAYAGG() - Building JSON Array in Group
⇐ GROUP_CONCAT() - Concatenating Items in Group
2023-12-19, 926🔥, 0💬
Popular Posts:
How To Format Time Zone in +/-hh:mm Format in SQL Server Transact-SQL? From the previous tutorial, y...
What Are Date and Time Functions in MySQL? MySQL offers a number of functions for date and time valu...
How to connect SQL Server Management Studio Express to SQL Server 2005 Express in SQL Server? Once y...
How To Enter Unicode Character String Literals in SQL Server Transact-SQL? Unicode characters are mu...
How To Connect the Oracle Server as SYSDBA in Oracle? This is Step 4. The best way to connect to the...