商品销售数据分析实验

进入虚拟机,启动HDFS和Yarn

1.创建表

复制代码
hive
show databases;
use test;

销售订单表

复制代码
create table t_dml (
  detail_id bigint,
  sale_date date,  
  province string,
  city string,
  product_id bigint,
  cnt bigint,
  amt double
)row format delimited
fields terminated by ',';

商品详细表:

复制代码
create table t_product (
    product_id bigint, 
    product_name string, 
    category_id bigint, 
    category_name string, 
    price double
)row format delimited
fields terminated by ',';

2.加载数据

创建目录存放数据

复制代码
mkdir /opt/data

加载数据

复制代码
load data local inpath '/opt/data/t_dml.csv' into table t_dml;
load data local inpath '/opt/data/t_product.csv' into table t_product;

3. 销售数据分析

1.查询t_dml中的销售记录的时间段:

复制代码
select max(sale_date), min(sale_date) from t_dml;

2.查询各商品类别的总销售额

复制代码
select t.category_name, sum(t.amt) as total_money
 from
 ( select a.product_id, a.amt, b.category_name
 from t_dml a
 join t_product b
 on a.product_id=b.product_id
 ) t
group by t.category_name;

3.店主想知道哪个商品最畅销以及销量排行榜,请查询销量前10的商品,显示商品名称,销量,排名。

复制代码
select a.product_name , t.cnt_total,
 rank() over (order by t.cnt_total desc) as rk
 from
 ( select product_id, sum(cnt) as cnt_total
 from t_dml
 group by product_id
 order by cnt_total desc
 limit 10
 ) t
 join t_product a
 on t.product_id=a.product_id;

4.店主想知道各个市县的购买力,同时也想知道自己的哪个商品在该地区最热卖,通过创建中间表,优化查询。

1. 创建结果存放表:

复制代码
create table t_city_amt
( province string,
 city string,
 total_money double
);
create table t_city_prod
( province string,
 city string,
 product_id bigint,
 product_name string,
 cnt bigint
);

2.插入数据

复制代码
insert into t_city_amt
select province,city,sum(amt)
from t_dml group by province,city;

SELECT * FROM t_city_amt;
复制代码
insert into t_city_prod
select t.province,t.city,t.product_id,t.product_name,sum(t.cnt) from
(
select a.product_id,b.product_name,a.cnt,a.province,a.city
from t_dml a join t_product b
on a.product_id = b.product_id
) t
group by t.province,t.city,t.product_id,t.product_name;

SELECT * FROM t_city_prod;

3. 优化

复制代码
from 
( select a.*, b.product_name
 from t_dml a
 join t_product b
 on a.product_id=b.product_id
) t
insert overwrite table t_city_amt
 select province, city, sum(amt)
 group by province, city
insert overwrite table t_city_prod
 select province, city, product_id, product_name, sum(cnt)
 group by province, city, product_id, product_name;

5.统计各省最强购买力地区:

复制代码
select province, city, total_money
 from
 ( 
  select province, city, total_money,
  dense_rank() over (partition by province order by total_money desc) as rk
  from t_city_amt
 ) t
where t.rk=1
order by total_money desc;

6.统计各地区的最畅销商品

复制代码
select province, city, product_id, product_name
 from
 ( select province, city, product_id, product_name,
 dense_rank() over (partition by province order by cnt desc) as rk
 from t_city_prod
 ) t
where t.rk=1
order by province, city;
相关推荐
reembarkation2 小时前
vue3中使用howler播放音频列表
前端·vue.js·音视频
要换昵称了3 小时前
Axios二次封装及API 调用框架
前端·vue.js
angerdream3 小时前
最新版vue3+TypeScript开发入门到实战教程之Pinia详解
前端·javascript·vue.js
假装没有名字3 小时前
Vue2、Vue3中的$scopedSlots和$slots区别
vue.js
badhope4 小时前
概率论如何让机器学习不再玄学
人工智能·深度学习·机器学习·数据挖掘·github
编程界一哥5 小时前
R6S DX12画面撕裂怎么设置 2026:从驱动到游戏内的完整调优步骤
数据挖掘
城数派6 小时前
2000-2024年1km精度人口分布栅格数据(全球/全国/分省/分市)
arcgis·信息可视化·数据分析·excel
badhope6 小时前
10个高星GitHub项目推荐
python·深度学习·计算机视觉·数据挖掘·github
城数派6 小时前
1984-2024年中国10米分辨率城市土地利用栅格数据(商业、公服、居住等9类)
arcgis·信息可视化·数据分析·excel
徐小夕7 小时前
花了一周时间,我们开源了一款PDF编辑SDK,支持在线批注+脱敏
前端·vue.js·github