Hive数据查询语言-DQL-含示例演练(Select查询数据、Join查询)

本文详细介绍了Hive的DQL,包括Select查询的基础和高阶语法,如ALL/DISTINCT、WHERE、GROUP BY、HAVING、LIMIT等。此外,还深入探讨了Join查询的不同类型,如INNER JOIN、LEFT JOIN、RIGHT JOIN等,以及使用注意事项。内容涵盖示例和执行顺序,是Hive查询学习的重要参考资料。
摘要由CSDN通过智能技术生成


1. Select查询数据

语法树

  • 从哪里查询取决于FROM关键字后面的table_reference。
  • 表名和列名不区分大小写
---------select语法树------------
[WITH CommonTableExpression (, CommonTableExpression)*]
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
  FROM table_reference
  [WHERE where_condition]
  [GROUP BY col_list]
  [ORDER BY col_list]
  [CLUSTER BY col_list
    | [DISTRIBUTE BY col_list] [SORT BY col_list]
  ]
 [LIMIT [offset,] rows];

1.1 基础语法

示例数据:
在这里插入图片描述

1.1.1 select_ecpr

  • select_expr表示检索查询返回的列,必须至少有一个select_expr。

示例:

  • 查询所有字段或者指定字段
select * from t_usa_covid19_p;
select county, cases, deaths from t_usa_covid19_p;
  • 查询匹配正则表达式的所有字段
SET hive.support.quoted.identifiers = none; --反引号不在解释为其他含义,被解释为正则表达式

在这里插入图片描述

  • 查询当前数据库
    在这里插入图片描述
  • 查询使用函数
    在这里插入图片描述

1.1.2 ALL、DISTINCT

  • 用于指定查询返回结果中重复的如何出来
    • 如果不指定则默认为ALL(返回所有匹配的行)。
    • DISTINCT指定从结果中删除重复的列。

示例:

  • 返回所有匹配的行
    在这里插入图片描述
  • 返回所有匹配的行 去除重复的结果
    在这里插入图片描述
  • 多个字段distinct 整体去重
    在这里插入图片描述

1.1.3 WHERE

  • WHERE后面是一个布尔表达式,用于查询过滤。
  • 在WHERE表达式中,可以使用Hive支持的任何函数和运算符,但聚合函数除外

示例:

  • where条件中使用函数 找出州名字母长度超过10位的有哪些
    在这里插入图片描述
  • 统计死亡人数大于100的州
    在这里插入图片描述

1.1.4 分区查询、分区裁剪

  • 针对Hive分区表,在查询时可以指定分区查询,减少全表扫描,也叫做分区裁剪。
  • 所谓分区裁剪指:对分区表进行查询时,会检查WHERE字句或JOIN中的ON字句是否存在对分区字段的过滤,如果存在,则仅访问查询符合条件的分区,即裁剪掉没必要访问的分区。

示例:

  • 找出来自加州,累计死亡人数大于1000的县 state字段就是分区字段 进行分区裁剪 避免全表扫描

在这里插入图片描述

--多分区裁剪
select * from t_usa_covid19_p where count_date = "2021-01-28" and state ="California" and deaths > 1000;

1.1.5 GROUP BY

  • GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
  • 出现在GROUP BY中select_expr的字段:要么是GROUP BY分组的字段;要么是被聚合函数应用的字段。
    示例:
  • 根据state州进行分组
    在这里插入图片描述

1.1.6 HAVING

  • having字句可以筛选分组后的各组数据,且可以使用聚合函数。

示例:

  • 统计死亡病例数大于10000的州
    在这里插入图片描述

HAVING和WHERE区别

  • having是在分组后对数据进行过滤
  • where是在分组前对数据进行过滤
  • having后面可以使用聚合函数
  • where后面不可以使用聚合函数

1.1.7 LIMIT

  • LIMIT用于限制SELECT语句返回的行数。
  • LIMIT接受一个或两个数字参数,这两个参数都必须是非负整数常量。

示例:

  • 返回结果集的前5条
    在这里插入图片描述
  • 返回结果集从第1行开始 共3行
    在这里插入图片描述

1.1.8 执行顺序

  • 在查询过程中执行顺序:from > group(含聚合)> having > order > select ;
    • 聚合语句(sum, min, max, avg, count)要比having字句优先执行
    • where字句在查询过程中执行优先界别优先于聚合语句(sum, min, max, avg, count)

1.2 高阶语法

1.2.1 ORDER BY

  • ORDER BY会对输出的结果进行全局排序
  • 默认排序为升序(ASC),也可以
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值