【Hive】笔试题 05 (求月销售额和总销售额)

1、数据说明

(1)数据格式

a,01,150
a,01,200
b,01,1000
b,01,800
c,01,250
c,01,220
b,01,6000
a,02,2000
a,02,3000
b,02,1000
b,02,1500
c,02,350
c,02,280
a,03,350
a,03,250

(2)字段含义

店铺,月份,金额

2、数据准备

(1)创建数据库表t_store

use class;
create table t_store(
name string,
months int,
money int
) 
row format delimited fields terminated by ",";

(2)导入数据

load data local inpath "/home/hadoop/store.txt" into table t_store;

3、需求

编写Hive的HQL语句求出每个店铺的当月销售额和累计到当月的总销售额

4、解析

(1)按照商店名称和月份进行分组统计

create table tmp_store1 as 
select name,months,sum(money) as money from t_store group by name,months;

select * from tmp_store1;

在这里插入图片描述

(2)对tmp_store1 表里面的数据进行自连接

create table tmp_store2 as 
select a.name aname,a.months amonths,a.money amoney,b.name bname,b.months bmonths,b.money bmoney from tmp_store1 a 
join tmp_store1 b on a.name=b.name order by aname,amonths;

select * from tmp_store2;

在这里插入图片描述

(3)比较统计

select aname,amonths,amoney,sum(bmoney) as total from tmp_store2 where amonths >= bmonths group by aname,amonths,amoney;

在这里插入图片描述

5、另一种方式(窗口函数)

select
name,months,t1.m_money,
sum(t1.m_money) over(partition by name order by months rows between unbounded preceding and current row) as sum_money
from
(select name,months,sum(money) as m_money from t_store group by name,months) as t1;

我们可以看到,最终得到的结果是一样的:

+-------+---------+-------------+------------+--+
| name  | months  | t1.m_money  | sum_money  |
+-------+---------+-------------+------------+--+
| a     | 1       | 350         | 350        |
| a     | 2       | 5000        | 5350       |
| a     | 3       | 600         | 5950       |
| b     | 1       | 7800        | 7800       |
| b     | 2       | 2500        | 10300      |
| c     | 1       | 470         | 470        |
| c     | 2       | 630         | 1100       |
+-------+---------+-------------+------------+--+
Hadoop和Hive是大数据处理领域中经常使用的工具和框架。 Hadoop是一个开源的分布式计算框架,旨在解决处理大规模数据的问题。它通过将大型数据集分布到多个计算机节点上,并利用集群中的多个计算资源进行并行计算和存储,从而实现高效地处理大数据。Hadoop包括Hadoop分布式文件系统(HDFS)和Hadoop资源调度器(YARN),它们共同构成了Hadoop的核心组件。HDFS负责将数据分布式存储到集群中的各个节点上,而YARN则负责管理集群中的资源和任务调度。Hadoop还提供了一个分布式计算编程模型MapReduce,用于编写并行计算任务。通过使用Hadoop,可以实现大规模数据的存储、处理和分析,从而提供有关数据的洞察力。 Hive是建立在Hadoop之上的数据仓库基础架构,它提供了一个类似于SQL的查询语言——HiveQL,用于将结构化数据映射到Hadoop分布式文件系统上,并提供高级查询和分析能力。Hive将用户提交的HiveQL查询转换为MapReduce任务,并在Hadoop集群上执行。Hive的设计目标是提供高效灵活的数据查询和分析解决方案,同时隐藏底层的复杂性。它支持用户自定义函数(UDF)、数据压缩和数据分区等功能,以及与其他工具(如Pig、Sqoop和Flume)的集成。通过使用Hive,用户可以方便地使用SQL语言进行数据的查询、过滤、转换和分析,而无需深入了解Hadoop的底层技术。 结来说,Hadoop和Hive是大数据处理领域中非常重要的工具和框架。Hadoop提供了一个分布式计算和存储的平台,可用于处理大规模数据,而Hive则建立在Hadoop之上,提供了更高级的查询和分析能力,使用户可以通过类似SQL的语言对大数据进行查询和分析。这些工具的使用可以帮助用户更高效、方便地处理和分析大规模数据,并挖掘出有价值的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值