Hive 表 DML 操作——第2关:Select 操作

简介: Hive 表 DML 操作——第2关:Select 操作

任务描述

本关任务:按照编程要求执行相应的select操作。


相关知识

为了完成本关任务,你需要掌握:1. select语法格式;2. 常用的select语法。


select 语法格式

Hive select操作的语法与SQL-92规范几乎没有区别,其格式语法为:

SELECT [ALL | DISTINCT] select_expr,select_expr,… FROM table_reference
[WHERE where_condition] [GROUP BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT number]


select 与各种属性的组合
  • 简单的select查询操作,如下面的查询操作返回students表中所有的行和列:
    hive> select * from students;
  • WHERE子句的select条件查询操作,返回满足WHERE指定条件的行。如下面的查询操作返回用户信息表users中的年龄大于10岁且国籍为中国的所有用户:
hive>  select * from users where age > 10 and state = "China";


ALLDISTINCT关键字的查询操作作用于确定是否返回重复的行,默认为ALL,即select查询返回重复的行:

hive>  select coll,coll2 from t1;
      1 3
      1 3
      1 4
      2 5
hive>  select distinct coll,coll2 from t1;
      1 3
      1 4
      2 5
hive>  select distinct coll from t1;
      1
      2



HAVING关键字的查询操作用于代替复杂的子查询操作 如查询操作:

hive> select coll from (select coll,sum(col2) as col2sum from t1 group by coll) t2 where t2.col2sum > 10;

可以替换为:

hive>  select coll from t1 group by col1 having sum(col2) >10;


  • LIMIT关键字的查询操作用于返回指定数目的满足条件的行(常用于返回Top k 问题)。返回满足条件的5条记录,返回结果为从满足条件的记录中随机选取5条。
    select * from t1 limit 5;
  • Top k问题,返回满足条件的列按col1降序排列的前5条记录:
    select * from t1 sort by col1 desc limit 5;


编程要求

test2数据库中student表结构为:

INFO TYPE COMMENT
Sno INT student sno
name STRING student name
age INT student age
sex STRING student sex
score STRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT> student score


表中的数据为:

  • 切换到test2数据库;
  • 查询student表中所有的行和列;
  • 查询年龄age > 17的女生female
  • 查询语文成绩Chinese > 90的记录;
  • student表中查询前3条记录;
  • 返回按年龄降序的前2条记录。
按照以上要求填写命令。每个要求对应一条命令,共6条命令,以;隔开。
由于hive启动时间较长,测评时请耐心等待,大概需要时间:1-2分钟。


测试说明

平台会对你编写的命令进行测试:

若操作成功,会显示如下信息:

1    Xiaohong    18    female    {"chinese":96.0,"math":88.0,"english":90.5}
2    Xiaoliang    17    male    {"chinese":95.0,"math":88.0,"english":93.5}
3    Xiaoming    19    male    {"chinese":86.5,"math":98.0,"english":91.0}
4    Xiaoguang    18    male    {"chinese":88.0,"math":80.0,"english":94.0}
5    Xiaohua    16    female    {"chinese":97.0,"math":58.5,"english":88.0}
1    Xiaohong    18    female    {"chinese":96.0,"math":88.0,"english":90.5}
1    Xiaohong    18    female    {"chinese":96.0,"math":88.0,"english":90.5}
2    Xiaoliang    17    male    {"chinese":95.0,"math":88.0,"english":93.5}
5    Xiaohua    16    female    {"chinese":97.0,"math":58.5,"english":88.0}
1    Xiaohong    18    female    {"chinese":96.0,"math":88.0,"english":90.5}
2    Xiaoliang    17    male    {"chinese":95.0,"math":88.0,"english":93.5}
3    Xiaoming    19    male    {"chinese":86.5,"math":98.0,"english":91.0}
3    Xiaoming    19    male    {"chinese":86.5,"math":98.0,"english":91.0}
4    Xiaoguang    18    male    {"chinese":88.0,"math":80.0,"english":94.0}


说明:

  • 1-5行返回的是查询student表中所有的行和列的结果
  • 6行返回的是查询年龄age > 17的女生female的结果
  • 7-9行返回的是查询语文成绩Chinese > 90的记录的结果
  • 10-12行返回的是从student表中查询前3条记录的结果
  • 12-13行返回的是返回按年龄降序的前2条记录的结果


开始你的任务吧,祝你成功!

--Begin
USE test2;
select * from student;
select * from student where age > 17 and sex = "female";
select * from student where score.Chinese > 90;
select * from student limit 3;
select * from student sort by age desc limit 2;
--End
目录
相关文章
|
7月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
113 0
|
7月前
|
SQL Java 数据库连接
java链接hive数据库实现增删改查操作
java链接hive数据库实现增删改查操作
437 0
|
7月前
|
SQL 消息中间件 数据处理
DataX读取Hive Orc格式表丢失数据处理记录
DataX读取Hive Orc格式表丢失数据处理记录
281 0
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
306 0
|
5月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
231 1
|
6月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在进行Hive分区truncate操作时遇到权限不足,怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
88 0
|
7月前
|
SQL DataWorks 网络安全
DataWorks操作报错合集之DataWorks连接Hive数据库时出现连接超时的问题如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
114 2
|
7月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
103 0
|
7月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别