SQL CUBE

摘要:在本教程中,您將學習如何使用 SQL CUBE 為指定的列生成所有可能的分組組合。

SQL CUBE 簡介 #

GROUP BY 子句將結果集的行按一個或多個列值分成組。

您可以對每個組應用聚合函式以返回一個聚合值,例如 SUMAVGMINMAXCOUNT

CUBEGROUP BY 子句的擴充套件,它允許您為指定的列生成所有可能的分組組合,包括小計和總計。

以下是帶有 CUBEGROUP BY 子句的語法

SELECT
  column1,
  column2,
  aggregate_function (column3)
FROM
  table_name
GROUP BY
  CUBE (column1, column2);Code language: SQL (Structured Query Language) (sql)

在此語法中,我們在 CUBE 中指定了兩列。該語句建立了兩個小計組合。通常,如果您在 CUBE 中列出了 n 個列,該語句將建立 2n 個小計組合。

CUBE 運算子的工作方式如下

  • 首先,為指定的列生成所有可能的分組資料組合。
  • 其次,為每個列組合建立一個聚合值。
  • 第三,包含一個總計行,該行聚合了所有行。

在實踐中,您會發現 CUBE 運算子對於多維分析很有幫助,例如按州和職位彙總薪資資料。

SQL CUBE 示例 #

我們將對 salary_reports 表使用 CUBE

職位薪資
加利福尼亞IT150000.00
加利福尼亞市場營銷130000.00
德克薩斯IT100000.00
德克薩斯市場營銷80000.00

對單列使用 SQL CUBE #

以下查詢在 GROUP BY 子句中使用 CUBE 來計算按州分的薪資小計和所有州的總薪資

SELECT
  state,
  SUM(salary) AS salary
FROM
  salary_reports
GROUP BY
  CUBE (state)
ORDER BY
  state;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

   state    |  salary
------------+-----------
 California | 280000.00
 Texas      | 180000.00
 NULL       | 460000.00Code language: SQL (Structured Query Language) (sql)

州列中的 NULL 表示所有州的總薪資。

您可以使用 COALESCE 函式返回更有意義的標籤

SELECT
  COALESCE(state, 'Total') state,
  SUM(salary) AS salary
FROM
  salary_reports
GROUP BY
  CUBE (state)
ORDER BY
  salary;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

   state    |  salary
------------+-----------
 Texas      | 180000.00
 California | 280000.00
 Total      | 460000.00Code language: SQL (Structured Query Language) (sql)

對多列使用 SQL CUBE #

以下查詢在 GROUP BY 子句中使用 CUBE 來分析所有州和職位組合的薪資資料

SELECT
  state,
  job,
  SUM(salary) AS salary
FROM
  salary_reports
GROUP BY
  CUBE (state, job);Code language: SQL (Structured Query Language) (sql)

試一試

輸出

   state    |    job    |  salary
------------+-----------+-----------
 NULL       | NULL      | 460000.00
 California | IT        | 150000.00
 Texas      | Marketing |  80000.00
 Texas      | IT        | 100000.00
 California | Marketing | 130000.00
 California | NULL      | 280000.00
 Texas      | NULL      | 180000.00
 NULL       | Marketing | 210000.00
 NULL       | IT        | 250000.00Code language: SQL (Structured Query Language) (sql)
  • 總計:州和職位均為 NULL 的行表示所有薪資的總和。
  • 各州小計:職位列為 NULL 的行表示每個州的總薪資。
  • 各職位小計: 州列為 NULL 的行表示每個職位的總薪資。
  • 明細行:其餘行顯示每個州和職位組合的總薪資。

摘要 #

  • 使用 SQL CUBE 進行多維分析。

測驗 #

資料庫 #

本教程是否有幫助?
© .