rollup 是 sql 中的聚合函數,用于對層次結構中的數據進行多級分組和匯總。它的語法為:rollup(expression)。通過對數據按不同粒度進行聚合,rollup 函數可以輕松創建多級聚合,提高查詢性能,并允許用戶在不同粒度上探索數據。
rollup 在 SQL 中的用法
什么是 rollup?
rollup 是 SQL 中的聚合函數,用于在層次結構中分組和匯總數據。它允許用戶對數據進行多級聚合,從最詳細的級別到最概括的級別。
如何使用 rollup?
rollup 函數的語法如下:
<code class="sql">rollup(expression)</code>
登錄后復制
其中:
expression:要分組和聚合的表達式,可以是列名、聚合函數或其他計算。
rollup 函數的用法示例:
示例 1:按”region”和”product”分組匯總銷售額
<code class="sql">SELECT region, product, SUM(sales) FROM sales_table GROUP BY ROLLUP(region, product);</code>
登錄后復制
此查詢將生成以下輸出:
region | product | sum(sales) |
---|---|---|
Central | Product A | 1000 |
Central | Product B | 1500 |
Central | Total | 2500 |
East | Product A | 500 |
East | Product B | 750 |
East | Total | 1250 |
West | Product A | 700 |
West | Product B | 900 |
West | Total | 1600 |
Grand Total | 5350 |
示例 2:按時間層次結構分組匯總訂單數量
<code class="sql">SELECT year, quarter, month, COUNT(order_id) FROM orders_table GROUP BY ROLLUP(year, quarter, month);</code>
登錄后復制
此查詢將生成以下輸出:
year | quarter | month | count(order_id) |
---|---|---|---|
2021 | 1 | 1 | 100 |
2021 | 1 | 2 | 150 |
2021 | 1 | Total | 250 |
2021 | 2 | 3 | 120 |
2021 | 2 | 4 | 130 |
2021 | 2 | Total | 250 |
2022 | 1 | 1 | 90 |
2022 | 1 | Total | 90 |
Grand Total | 630 |
rollup 的優點:
輕松創建多級聚合。
允許用戶在不同粒度上探索數據。
提高查詢性能,因為聚合是提前計算的。