Hive综合应用案例——用户学历查询

第一关 查询一个用户从出生到现在的总天数

sql 复制代码
---------- 禁止修改 ----------
drop database if exists mydb cascade;
---------- 禁止修改 ----------


---------- begin ----------
---创建mydb数据库
CREATE DATABASE mydb;

---使用mydb数据库
USE mydb;

---创建表usertab
CREATE TABLE usertab (
    id INT, 
    sex STRING,
    time STRING,
    education STRING,
    occupation STRING,
    income STRING,
    area STRING,
    desired_area STRING,
    city_countryside STRING 
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';


---导入数据:/root/data.txt
LOAD DATA LOCAL INPATH '/root/data.txt' INTO TABLE usertab;


---查询每一个用户从出生到现在的总天数
SELECT 
    id,
    DATEDIFF('2019-06-10', TO_DATE(REPLACE(time, '/', '-'))) AS days_since_birth
FROM usertab;


---------- end ----------

第二关 同一个地区相同的教育程度的最高收入

sql 复制代码
---------- 禁止修改 ----------
drop database if exists mydb cascade;
---------- 禁止修改 ----------


---------- begin ----------
---创建mydb数据库
CREATE DATABASE mydb;

---使用mydb数据库
USE mydb;

---创建表usertab1
CREATE TABLE usertab1 (
    id INT, 
    sex STRING,
    time STRING,
    education STRING,
    occupation STRING,
    income INT,
    area STRING,
    desired_area STRING,
    city_countryside STRING 
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

---导入数据:/root/data1.txt
LOAD DATA LOCAL INPATH '/root/data1.txt' INTO TABLE usertab1;

--同一个地区相同的教育程度的最高收入
SELECT 
    area, 
    education, 
    MAX(income) AS max_income
FROM usertab1
GROUP BY area, education
ORDER BY area, 
         CASE education 
             WHEN '专科' THEN 1
             WHEN '本科' THEN 2
             WHEN '硕士' THEN 3
             ELSE 4
         END;

---------- end ----------

第三关 统计各级学历所占总人数百分比

sql 复制代码
---------- 禁止修改 ----------
drop database if exists mydb cascade;
set hive.mapred.mode=nonstrict;
---------- 禁止修改 ----------
 
 
---------- begin ----------
----创建mydb数据库
CREATE DATABASE mydb;
 
---使用mydb数据库
USE mydb;
 
---创建表user
CREATE TABLE usertab2 (
    id INT, 
    sex STRING,
    time STRING,
    education STRING,
    occupation STRING,
    income STRING,
    area STRING,
    desired_area STRING,
    city_countryside STRING 
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
 
---导入数据:/root/data.txt
LOAD DATA LOCAL INPATH '/root/data.txt' INTO TABLE usertab2;
 
--查询
SELECT 
    CONCAT(ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2), '%') AS percentage,
    education
FROM usertab2
GROUP BY education
ORDER BY education;
---------- end ---------- 
相关推荐
牛奶咖啡133 天前
大数据Hadoop运维应用实践——HIVE与Hadoop实现整合_Hive的配置安装与使用
大数据·hive·hive的配置与安装·metastore服务的配置·hiveserver2服务配置·hive的常用sql操作·beeline的使用
Zhu7584 天前
在k8s集群环境部署高可用的Apache Hadoop3.1.1定制版集群
hadoop·kubernetes
Y3815326624 天前
3 种 SERP 数据 ETL 方案对比:实时 / 定时 / 流式
数据仓库·etl
还有你Y5 天前
软件工程架构
hadoop·架构·软件工程
向夏威夷 梦断明暄5 天前
基于Tez引擎的 Hive SQL 性能优化
hive·sql·性能优化
这个DBA有点耶6 天前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
RestCloud7 天前
Informatica迁移国产ETL完整实施指南:ETLCloud自动化平滑替换方案
数据仓库·etl·etlcloud·数据传输·数据集成工具·informatica·国产化替代
德昂信息dataondemand7 天前
全量还是增量?聊聊数仓ETL中的数据同步策略
数据仓库·etl
观远数据8 天前
数据集成平台选型战卡:DataFlow对比传统ETL的5个维度与红线排除项
数据仓库·etl