MySQL中的ROLLUP是一種查詢聚合函數,它能夠遞歸計算聚合結果。在使用ROLLUP時,查詢結果將包括指定列的聚合結果,同時也會包括該列按分組進行的聚合結果,以及所有列的總計聚合結果。
SELECT country, city, COUNT(*) FROM orders
GROUP BY country, city WITH ROLLUP;
上述代碼將根據country和city對表orders中的數據進行分組統計,同時通過ROLLUP加上總計聚合結果。
當查詢結果中同時包含分組以及總計聚合結果時,分組結果會以NULL值代替分組列的值,總計結果會以包含多個NULL值的行來表示。例如:
+---------+------------+----------+
| country | city | COUNT(*) |
+---------+------------+----------+
| China | Beijing | 10 |
| China | Shanghai | 15 |
| Japan | Tokyo | 20 |
| Japan | Osaka | 5 |
| NULL | NULL | 50 |
+---------+------------+----------+
在上面的結果中,最后一行為總計聚合結果,city和country列的值都為NULL。
ROLLUP在處理數據透視表時非常有用,能夠方便地計算各種維度下的聚合結果。同時,ROLLUP也是MySQL一種比較高級的聚合方式,減少了使用其他語言進行數據處理的必要。
上一篇css線條陰影在上邊
下一篇CSS真假安耐曬可以