MySQL 函数

发布时间 2023-06-20 10:47:05作者: xfcoding

rollup

rollup是 SQL 关键字,在 MySQL 中得用with rollup。它是group by子句的扩展,用于统计后增加一行汇总数据。

举例,现有库存表,我们按仓库名称分组,统计每个仓库的产品总量,最后来一个汇总。

mysql> SELECT * FROM inventory;
+----+---------------+---------+----------+
| id | warehouse     | product | quantity |
+----+---------------+---------+----------+
|  1 | San Jose      | iPhone  |      100 |
|  2 | San Fransisco | iPhone  |       60 |
|  3 | San Jose      | huawei  |      200 |
|  4 | San Fransisco | huawei  |      100 |
+----+---------------+---------+----------+
SELECT warehouse, SUM(quantity) sum
FROM inventory
GROUP BY warehouse WITH ROLLUP;
+---------------+------+
| warehouse     | sum  |
+---------------+------+
| San Fransisco |  160 |
| San Jose      |  300 |
| NULL          |  460 |
+---------------+------+

最后,使用COALESCE()函数将NULL值替换成一个别名。COALESCE()的功能是返回第一个不为空的值。

SELECT COALESCE(warehouse, 'warehouseAll') warehouse, SUM(quantity) sum
FROM inventory
GROUP BY warehouse WITH ROLLUP;
+---------------+------+
| warehouse     | sum  |
+---------------+------+
| San Fransisco |  160 |
| San Jose      |  300 |
| warehouseAll  |  460 |
+---------------+------+