hive group by 统计占比
  R5Nx2b1dLC7C 2023年11月28日 21 0

hive group by 统计占比

引言

在大数据处理中,数据的统计分析是非常重要的一环。Hive是一个基于Hadoop的数据仓库基础设施,它提供了一个方便的查询和分析大数据的方式。其中,group by是Hive中常用的一个关键字,它可以根据指定的列将数据分组,并对每个组进行统计计算。本文将介绍如何使用group by关键字进行统计占比的操作。

分组统计的概念

分组统计是指根据某个或某些列对数据进行分组,并对每个组进行统计计算。例如,我们有一张销售订单表,其中包含了订单号、产品类型和销售金额等信息。我们可以使用group by关键字,按照产品类型对数据进行分组,并计算每种产品类型的销售总金额。

实例说明

假设我们有一张销售订单表格,包含了订单号(order_id)、产品类型(product_type)和销售金额(sales_amount)三个字段。我们希望统计每种产品类型的销售金额占总销售金额的比例。

数据准备

首先,我们需要准备一份示例数据,保存为文本文件格式。文件内容如下:

订单号  产品类型  销售金额
1001   A        100
1002   B        200
1003   A        300
1004   C        150
1005   B        250
1006   C        200

保存为sales.txt文件。

创建Hive表

接下来,我们需要在Hive中创建一个表,并将文本文件导入到该表中。可以使用以下DDL语句创建表:

CREATE TABLE sales (
  order_id INT,
  product_type STRING,
  sales_amount DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

然后,使用以下命令将数据导入到表中:

LOAD DATA LOCAL INPATH '/path/to/sales.txt' INTO TABLE sales;

统计占比

现在,我们已经准备好了数据,并创建了相应的表。接下来,我们可以使用group by关键字进行统计占比的计算。

SELECT
  product_type,
  SUM(sales_amount) AS total_sales_amount,
  SUM(sales_amount) / (SELECT SUM(sales_amount) FROM sales) AS sales_amount_ratio
FROM
  sales
GROUP BY
  product_type;

上述代码中,我们首先使用SUM函数计算了每种产品类型的销售总金额(total_sales_amount)。然后,我们使用子查询语句计算了总销售金额,并将每种产品类型的销售总金额除以总销售金额,得到销售金额的占比(sales_amount_ratio)。最后,我们使用group by关键字按照产品类型进行分组。

查询结果

执行上述查询语句后,我们将得到以下结果:

product_type  total_sales_amount  sales_amount_ratio
A             400                 0.3333333333333333
B             450                 0.375
C             350                 0.2916666666666667

从上述查询结果中,我们可以看到每种产品类型的销售总金额以及销售金额的占比。

类图

以下是本文介绍的示例代码的类图:

classDiagram
    class Sales {
        - order_id: INT
        - product_type: STRING
        - sales_amount: DOUBLE
        + getOrderId(): INT
        + getProductType(): STRING
        + getSalesAmount(): DOUBLE
    }

上述类图表示了Sales类,它包含了订单号、产品类型和销售金额等属性,以及相应的访问方法。

序列图

以下是本文介绍的示例代码的序列图:

sequenceDiagram
    participant Client
    participant Hive
    participant Sales

    Client ->> Hive: 创建表
    Client ->> Hive: 导入数据
    Client ->> Hive: 执行查询
    Hive ->> Sales: 分组统计
    Sales ->> Hive: 返回结果
    Hive ->> Client: 返回结果
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: hive 时间不同步 下一篇: hivesql startwith
  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
R5Nx2b1dLC7C
最新推荐 更多

2024-05-31