在Hive中,`GROUPING SETS` 是一个用于生成多个分组聚合的SQL功能,它可以让你在一个查询中指定多个分组集,这样可以有效地生成多维度的汇总数据。下面我将通过一个例子来展示如何使用 `GROUPING SETS`,并创建一个Hive表以及插入十条数据进行演示。
### 步骤 1: 创建Hive表
首先,我们创建一个简单的销售数据表,包含商品名称、销售地区和销售额:
sql
CREATE TABLE sales_data (
product_name STRING,
region STRING,
sales_amount INT
);
### 步骤 2: 插入数据
接下来,向表中插入一些示例数据:
sql
INSERT INTO sales_data VALUES
('Product A', 'North', 100),
('Product A', 'South', 150),
('Product A', 'East', 200),
('Product A', 'West', 250),
('Product B', 'North', 200),
('Product B', 'South', 300),
('Product B', 'East', 400),
('Product B', 'West', 500),
('Product C', 'North', 150),
('Product C', 'South', 250);
### 步骤 3: 使用 GROUPING SETS
现在,我们使用 `GROUPING SETS` 来查询不同维度的销售总额。我们将计算每个产品的总销售额、每个地区的总销售额以及全体总销售额:
SELECT product_name, region, SUM(sales_amount) AS total_sales FROM sales_data GROUP BY GROUPING SETS ( (product_name, region), -- 每个产品在每个地区的销售额 (product_name), -- 每个产品的总销售额 (region), -- 每个地区的总销售额 () -- 全体总销售额 ) order by product_name ,region ; product_name region total_sales NULL NULL 2500 NULL East 600 NULL North 450 NULL South 700 NULL West 750 Product A NULL 700 Product A East 200 Product A North 100 Product A South 150 Product A West 250 Product B NULL 1400 Product B East 400 Product B North 200 Product B South 300 Product B West 500 Product C NULL 400 Product C North 150 Product C South 250
标签:Product,North,sales,用法,SETS,NULL,GROUPING From: https://www.cnblogs.com/mengbin0546/p/18399610