📜  SQL 中的透视和反透视(1)

📅  最后修改于: 2023-12-03 14:47:37.117000             🧑  作者: Mango

SQL 中的透视和反透视

SQL 中的透视和反透视是数据分析师必知必会的重要技能之一。通过透视和反透视,数据分析师可以轻松地从大量的数据中挖掘出有用的信息,为企业的决策提供支持。

什么是透视

透视是一种数据透视表格,它可以让我们对数据进行聚合,将数据在不同的维度上展示,从而更好地理解和分析数据。在 SQL 中,我们可以通过 GROUP BY 和聚合函数(如 SUM,AVG,COUNT)来实现透视。下面是一个简单的示例:

SELECT category, SUM(sales) as total_sales
FROM sales_table
GROUP BY category;

这个查询将按照 category 列进行分组,并计算每个 category 的总销售额。结果将显示为以下表格:

| category | total_sales | |----------|-------------| | A | 1000 | | B | 2000 | | C | 1500 |

在这个示例中,我们将数据按照类别进行分组,并计算了每个类别的总销售额。这使得我们可以很容易地看到不同类别之间的销售额差异,从而更好地理解数据。

什么是反透视

反透视是一种将列数据转化为行数据的技术,它将列数据中的每个值转化为一列,并将原表中的每一行拆分成多行。在 SQL 中,我们可以通过使用 UNPIVOT 命令来实现反透视。下面是一个简单的示例:

SELECT * FROM
(SELECT *
FROM sales_table
WHERE year = 2021) AS s
UNPIVOT
(total_sales FOR quarter IN (q1, q2, q3, q4)) AS u;

这个查询将原表格中的 q1q2q3q4 四列转化为一列 quarter,并且将每一行分解成四行。结果将显示为以下表格:

| category | year | quarter | total_sales | |----------|------|---------|-------------| | A | 2021 | q1 | 100 | | A | 2021 | q2 | 150 | | A | 2021 | q3 | 200 | | A | 2021 | q4 | 250 | | B | 2021 | q1 | 120 | | B | 2021 | q2 | 180 | | B | 2021 | q3 | 240 | | B | 2021 | q4 | 300 |

在这个示例中,我们将原表中四个季度的销售额分别转化为一列 quarter,每一行拆分成了四行。这使得我们可以更方便地查看每个季度的销售额,从而更好地理解数据。

总结

透视和反透视是 SQL 中非常有用的技术,可以帮助我们更好地理解和分析数据。透视可以让我们将数据按照不同的维度进行聚合,得出有价值的信息,而反透视则可以将列数据转化为行数据,使数据更容易理解。对于数据分析师来说,学会使用透视和反透视是非常重要的。