Hive高频SQL及典型应用场景总结

Hive高频SQL及典型应用场景总结


一、基础操作类高频SQL

1. ‌**创建表(含分区/分桶)**‌

sql 复制代码
CREATE TABLE sales (
  employee_id STRING,
  sale_amount DOUBLE,
  trans_date DATE
) PARTITIONED BY (year INT, month INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC;  -- 企业常用ORC/Parquet格式优化存储

场景‌

日志表按年月分区,提升查询效率(如按日期过滤时仅扫描特定分区)。

2. ‌数据加载‌

sql 复制代码
LOAD DATA INPATH '/hdfs/path/sales.csv' INTO TABLE sales;  
-- 从HDFS加载数据到分区表

二、分析类高频SQL

1. ‌窗口函数‌

  • Top N场景‌(如部门销售额Top 3员工)
sql 复制代码
SELECT employee_id, sale_amount,
       ROW_NUMBER() OVER (PARTITION BY dept ORDER BY sale_amount DESC) AS rank
FROM sales
WHERE rank <= 3;  -- 避免并列排名
  • 累计计算‌(如用户月度累计访问次数)
sql 复制代码
SELECT user_id, month,
       SUM(visit_cnt) OVER (PARTITION BY user_id ORDER BY month) AS total_visits
FROM user_logs;  -- 实现滚动累计统计

2. ‌LATERAL VIEW + EXPLODE‌(列转行)

sql 复制代码
SELECT user_id, product
FROM orders
LATERAL VIEW EXPLODE(product_list) tmp AS product;  
-- 展开JSON数组字段为多行

3. ‌行转列(Pivot)‌

sql 复制代码
SELECT customer_id, 
       CONCAT_WS(',', COLLECT_SET(product_name)) AS all_products
FROM purchases
GROUP BY customer_id;  
-- 聚合多行数据为字符串

三、高频聚合与条件操作

1. ‌聚合函数+分组‌

sql 复制代码
SELECT dept, AVG(salary), COUNT(DISTINCT employee_id)
FROM employees
GROUP BY dept;  -- 结合DISTINCT去重统计

2. ‌CASE WHEN条件分支‌

sql 复制代码
SELECT user_id,
       CASE WHEN total_spend > 10000 THEN 'VIP'
            WHEN total_spend > 5000 THEN '中级' 
            ELSE '普通' END AS user_level
FROM orders;  -- 用户分层场景

四、高频面试SQL题示例

1. ‌Top N问题‌

sql 复制代码
SELECT * FROM (
  SELECT *, DENSE_RANK() OVER (ORDER BY sale_amount DESC) AS rank
  FROM sales
) tmp WHERE rank <= 5;  -- 处理并列排名

2. ‌时间区间统计‌

sql 复制代码
SELECT user_id,
       SUM(IF(month BETWEEN 1 AND 3, amount, 0)) AS Q1_sales
FROM orders
GROUP BY user_id;  -- 按季度汇总销售额

3. ‌连续登录用户‌

sql 复制代码
SELECT user_id
FROM (
  SELECT user_id, 
         LEAD(login_date, 2) OVER (PARTITION BY user_id ORDER BY login_date) AS date_plus2
  FROM logins
) tmp WHERE DATEDIFF(date_plus2, login_date) = 2;  -- 检测连续3天登录

五、优化类高频操作

1. ‌分区过滤‌

sql 复制代码
SELECT * FROM sales 
WHERE year=2025 AND month=3;  -- 分区裁剪减少数据扫描量

2. ‌避免笛卡尔积‌

sql 复制代码
SELECT a.id, b.name
FROM table_a a
JOIN table_b b ON a.key = b.key;  -- 显式指定JOIN条件

核心总结

高频操作‌:窗口函数、行列转换、条件聚合

典型场景‌:日志分析、用户分层、报表生成

优化重点‌:分区/分桶设计、避免全表扫描、合理使用存储格式(ORC/Parquet)

相关推荐
IALab-检测行业AI报告生成2 小时前
IACheck AI 报告审核助手:整体架构与详细结构说明
大数据·人工智能·架构·ai报告审核
码农杂谈00072 小时前
AI 原生企业内容管理:4 大转型策略,破解老软件 AI 升级难题
大数据·人工智能·内容中台·企业内容管理系统·内容生产·ai内容生产·生成式 ai 品牌力
tuotali20264 小时前
氢气压缩机技术核心要点测评
大数据·人工智能
山岚的运维笔记5 小时前
SQL Server笔记 -- 第65章:迁移 第66章:表值参数
数据库·笔记·sql·microsoft·sqlserver
志栋智能5 小时前
AI驱动的系统自动化巡检:重塑IT基石的智慧“守护神”
大数据·运维·人工智能·云原生·自动化
qyr67896 小时前
便携式太阳能折叠板市场白皮书与未来趋势展望
大数据·人工智能·物联网·市场分析·市场报告·便携式太阳能折叠板·太阳能折叠板
码农杂谈00077 小时前
企业 AI 推理:告别黑箱决策,4 步构建可解释 AI 体系
大数据·人工智能
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-02-18
大数据·数据库·人工智能·经验分享·搜索引擎
知识分享小能手8 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 视图操作 — 语法知识点及使用方法详解(16)
sql·学习·sqlserver
城数派8 小时前
我国逐日地表气压栅格数据(2005-2025年)
大数据·数据分析