Hive实例-农产品统计

数据样例

建表语句

农产品表

create external table farm_1(
type string,
price decimal(6,2),
name string,
provience string,
city string)
row format delimited fields terminated by '\t'
location '/farm_product/farm_1';

省份表

create table provience(pro string)
row format delimited fields terminated by '\t';

案例需求

1.统计每个省份的农产品市场总数

select provience,count(distinct name)
from farm_1
where name != ''
and provience != ''
group by provience;

在这里插入图片描述

2.统计没有农产品市场的省份有哪些

select b.pro
from (select provience
from farm_1
group by provience) a
right outer join provience b
on substr(a.provience,1,2) = substr(b.pro,1,2)
where a.provience is null;

在这里插入图片描述

3.统计山东省售卖蛤蜊的农产品市场占全省农产品市场的比例

select round(gala/sum,2)
from (select count(distinct name) as sum
from farm_1
where name != ''
and provience = '山东') as a,
(select count(distinct name) as gala
from farm_1
where name != ''
and provience = '山东'
and type='蛤蜊') as b;

在这里插入图片描述

4.统计每个省农产品种类总数

select provience,count(distinct type)
from farm_1
where provience != ''
and type != ''
group by provience;

在这里插入图片描述

5.统计排名前 3 的省份共同拥有的农产品类型

  • a. 计算前3省份的名称
  • b. 计算前3省份的所有去重产品名称
  • c. 计算共同拥有的产品
select c.type
from (
select a.provience,a.type
from(select provience,type
from farm_1
group by provience,type) a
left semi join(select provience,count(distinct type) as cnt
from farm_1
group by provience
order by cnt desc limit 3) b
on a.provience = b.provience)c
group by c.type;

在这里插入图片描述

6.计算山西省的每种农产品的价格波动趋势, 即计算每天价格均值, 并按照时间先后顺序排列该值。

某种农产品的价格均值计算公式:
P AVG = (P M1 +P M2 +…+P Mn -max§-min§)/(N-2)
其中,P 表示价格,Mn 表示 market,即农产品市场。P M1 表示 M1 农产品市场的该产品价
格,max§表示价格最大值,min§价格最小值。

select a.type,
IF(
count(a.type)>2,
round((sum(a.price)-max(a.price)-min(a.price))/(count(a.price)-2),2),
round(sum(a.price)/count(a.price),2)
)
from (select type,price
from farm_1
where provience='山西'
and type !=''
and price is not null
) a
group by a.type;

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值