当前位置: 首页 > news >正文

Hive SQL-DQL-Select查询语句用法详解

HQL Select用法详解

在这里插入图片描述

1.基础语法

在这里插入图片描述

(1)select_exp

在这里插入图片描述

(2)ALL、DISTINCT

在这里插入图片描述

(3)WHERE

在这里插入图片描述
在这里插入图片描述

(4)分区查询、分区裁剪

在这里插入图片描述

(5)GROUP BY

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)HAVING

在这里插入图片描述
在这里插入图片描述

(7)LIMIT

在这里插入图片描述

在这里插入图片描述

(8)执行顺序

在这里插入图片描述

2.高阶语法

在这里插入图片描述

(1)ORDER BY

在这里插入图片描述

在这里插入图片描述

(2)CLUSTER BY

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)DISTRIBUTE BY + SORT BY

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)UNION联合查询

在 Hive 中,可以使用 UNION 操作符执行联合查询,将多个查询的结果合并为一个结果集。UNION 操作符用于合并两个或多个 SELECT 语句的结果集,并去除重复的行。
在这里插入图片描述

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

在这个语法中,SELECT 语句必须具有相同数量和类型的列,它们的顺序也必须相同。UNION 将两个 SELECT 语句的结果集合并,并自动去除重复的行。

如果需要保留重复的行,可以使用 UNION ALL 操作符:

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;

注意事项和限制:

  1. 列数和数据类型必须匹配: 在每个 SELECT 子句中,列数和数据类型必须匹配。如果不匹配,Hive 将会抛出错误。

  2. 列顺序必须相同: 虽然不同的 SELECT 子句可以选择不同的列,但它们的顺序必须相同。否则,Hive 会抛出错误。

  3. 列名可能取决于第一个 SELECT 语句: 在某些情况下,联合查询的结果集中的列名可能取决于第一个 SELECT 语句中的列名。因此,最好保持所有 SELECT 语句中列名的一致性。

  4. 重复行处理: UNION 默认会去除重复的行,而 UNION ALL 会保留所有行,包括重复的行。

  5. 性能注意: 联合查询可能会对性能产生影响,特别是在处理大量数据时。在可能的情况下,应尽量减少联合查询的数量,或者使用其他性能更好的方法。

在这里插入图片描述

(5)子查询

在这里插入图片描述
在这里插入图片描述

(6)CTE表达式

在这里插入图片描述
CTE(Common Table Expression,公共表达式)是 SQL 中一种可用于创建临时命名结果集的结构。它们通常与递归查询一起使用,但也可以在常规查询中提高可读性和可维护性。

在 Hive SQL 中,CTE 使用 WITH 关键字来定义,它允许你为一个查询定义一个临时的命名结果集,然后在主查询中引用它。这对于分解复杂的查询逻辑、避免重复计算以及提高查询可读性都非常有用。

以下是一个示例,演示了如何在 Hive SQL 中使用 CTE:

假设你有一个表 employees,包含员工的 ID、姓名和工资信息。现在,假设你想要找到工资高于平均工资的员工。你可以使用 CTE 来计算平均工资,并在主查询中引用它:

WITH avg_salary AS (SELECT AVG(salary) AS avg_salaryFROM employees
)
SELECT emp_id, emp_name, salary
FROM employees
WHERE salary > (SELECT avg_salary FROM avg_salary);

在上面的示例中,avg_salary 是一个 CTE,它计算了 employees 表中所有员工的平均工资。然后,在主查询中,我们使用了这个 CTE 来过滤出工资高于平均工资的员工。

使用 CTE 可以使查询更加模块化和易读,同时避免了重复计算。它们还可以帮助分解复杂的查询逻辑,使查询更易于理解和维护。需要注意的是,虽然 CTE 在 Hive SQL 中非常有用,但并不是所有的数据库都支持这个功能。

http://www.lryc.cn/news/343995.html

相关文章:

  • 沙盘Sandboxie v5.56.4
  • Arcpy开发记录
  • Android使用itextpdf操作PDF文档
  • llama_index微调BGE模型
  • 什么是限流?常见的限流算法
  • ZL-0895小动物活动记录仪可同时检测8只动物的活动量
  • 注册测绘师的前世今生
  • Python中的异常处理:深入探索try-except-finally结构
  • 【R语言】边缘概率密度图
  • 中国结(科普)
  • 使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境
  • 区块链 | IPFS:CID
  • PostgreSQL(十二)报错:Tried to send an out-of-range integer as a 2-byte value: 51000
  • Linux守护进程
  • HarmonyOS 应用开发——入门
  • 开源免费的发票识别OCR应用:Invoice
  • 关于Docker alpine
  • 【Elasticsearch运维系列】Elasticsearch7.12.1启动指定版本JDK:你学废了吗?
  • 思通数科大模型在智能数据查询系统中的深度应用:销售数据分析的革新
  • 上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)
  • QT:QT窗口(一)
  • matlab例题大全
  • SwiGLU激活函数
  • MySQL慢查询优化
  • 开源数据可视化大屏对接表单数据实践!
  • 08.图形化界面字体问题处理
  • 【代码随想录算法训练营第37期 第二天 | LeetCode977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II】
  • Java:Servlet详解
  • Oracle存储过程怎么定义类并继承
  • 14_Scala面向对象编程_属性