【大数据之Hive】十一、Hive-HQL查询之基本查询

news/2024/5/20 5:31:15 标签: hive, 大数据, hadoop, sql, hdfs

基础语法

select [all | distinct] select_expr,select_expr, ...
    from table)name          --从什么表查
    [where where_condition]  --过滤
    [group by col_list]      --分组查询
    [having col_list]        --分组后过滤
    [order by col_list]      --排序
    [cluster by col_list | [distribute by col_list] [sort by col_list] ]
    [limit number];          --限制输出的行数

基本查询(select … from …)

原始数据:
  在/opt/module/hive/datas/下创建dept.txt文件和emp.txt文件

# dept.txt下字段为:部门编号 部门名称 部门位置id
vim dept.txt
10    行政部    1700
20    财务部    1800
30    教学部    1900
40    销售部    1700

#emp.txt下字段为:员工编号 姓名 岗位 薪资 部门
vim emp.txt
7369    张三    研发    800.00    30
7499    李四    财务    1600.00    20
7521    王五    行政    1250.00    10
7566    赵六    销售    2975.00    40
7654    侯七    研发    1250.00    30
7698    马八    研发    2850.00    30
7782    金九    \N    2450.0    30
7788    银十    行政    3000.00    10
7839    小芳    销售    5000.00    40
7844    小明    销售    1500.00    40
7876    小李    行政    1100.00    10
7900    小元    讲师    950.00    30
7902    小海    行政    3000.00    10
7934    小红明    讲师    1300.00    30

创建表并导入数据:

-- 创建部门表:
create table if not exists dept(
    deptnum int,    --部门编号
    dname string,    --部门名称
    locid int    --部门位置id
)
row format delimited fields terminated by '\t';

-- 创建员工表:
create table if not exists emp(
    empnum int,    --员工编号
    ename string,    --员工姓名
    job string,    --员工岗位
    sal double,    --员工薪资
    deptnum int    --部门编号
)
row format delimited fields terminated by '\t';

--导入数据:
load data local inpath 'opt/module/hive/datas/dept.txt' into table dept;
load data local inpath 'opt/module/hive/datas/emp.txt' into table emp;

1 全表和特定列查询

注意:
(1)SQL 语言大小写不敏感。
(2)SQL 可以写在一行或者多行。
(3)关键字不能被缩写也不能分行。
(4)各子句一般要分行写。
(5)使用缩进提高语句的可读性。

-- 全表查询:
selectr * from emp;

-- 选择特定列查询:
select empnum,ename from emp;

2 列别名

  重命名一个列,便于计算。
语法:

select old_col_name as new_col_name from tablename;
select old_col_name new_col_name from tablename;

如:

select ename as name,deptnum dn from emp;

3 limit语句

  查询返回多行数据,用limit限制返回的行数。

select * from emp limit 5;

--从第2行开始返回3行:
select * from emp limit 1,3;

4 where语句

  用where过滤不满足条件的行,只针对一行一行的数据,在from句后,且where句子不能用字段别名。

select * from emp where sal > 1000;

5 关系运算函数

  关系运算操作符主要用于where和having语句中。
在这里插入图片描述
对于模糊匹配like:用show查tables用通配符*,用select查表数据用通配符%。

6 逻辑运算函数

语法:
在这里插入图片描述

--查找薪水大于1000且部门是30的员工信息
select * from emp where sal > 1000 and deptnum = 30;

--查找薪水大于1000或部门是30的员工信息
select * from emp where sal > 1000 or deptnum = 30;

--查询除了部门2030以外的员工信息:
select * from emp where deptnum not in (30,20);

7 聚合函数

在这里插入图片描述

--求总行数(count):
select count(*) cnt from emp;

--求工资最大值(max):
select max(sal) max_sal from emp;

--求工资最小值:
select min(sal) min_sal from emp;

--求工资总和:
select sum(sal) sum_sal from emp;

--求工资平均值:
select avg(sal) avg_sal from emp;

在这里插入图片描述
在这里插入图片描述
sql语句翻译成MapReduce的执行计划,在Map端读入数据,在每个Map端上对读入的数据进行聚合,就减少了shuffle的数据量,然后将每个Map聚合之后的结果汇总到一个Reduce中,在Reduce上进行统计。


http://www.niftyadmin.cn/n/430851.html

相关文章

Linux :: 权限篇【2】:详解文件操作权限表示方式!字符表示法 及 八进制表示法说明!

系列文章说明 前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集推荐: C 入门到入土!!!学习合集Linux 从命令到网络再到内核!学习…

Qt下面窗口嵌套,嵌套窗口中包含:QGraphicsView、QGraphicsScene、QGraphicsIte

Qt系列文章目录 文章目录 Qt系列文章目录前言一、嵌套窗口二、注意事项 前言 我们有一个主窗口mainwindow,需要向其中放入新的界面,你可以自己定义里面内容。 Qt的嵌套布局由QDockWidget完成,用Qt Creator拖界面得到的dock布置形式比较固定,…

汽车IVI中控开发入门及进阶(九):显示屏

前言: 显示屏Display panel和触控屏Touch panel,可以说随着汽车四化的进展,屏越来越多,越来越大,越来越高清,成为IVI中控、智能座舱系统的重要组成部分。比如如下一个电阻触摸屏。 正文: 显示屏 主要功能就是显示,车载内容和信息的传递全靠显示屏,目前车载显示屏的…

计算机组成原理(六)指令系统

一、指令的基本格式 1.1机器指令的相关概念 指令集(Instruction Set) 某机器所有机器指令的集合 *定长指令集 指令集中的所有指令长度均相同!取指令控制简单*不定长指令集 指令集中的所有指令长度有长、有短 操作码 (1)长度固定 用于指令字长较长的情况RISC 如IBM370操作码8位…

排序之冒泡排序

算法思路 比较相邻的两个元素,如果第一个元素比第二个元素大,则交换它们的位置。对每一对相邻的元素做同样的工作,从开始到结尾,这样每一轮过后,最后的元素都是当前未排序元素中的最大值,因此每次需要将待排…

看图角色扮演聊天ui

该程序是一个聊天机器人的界面程序,主要功能是让用户输入文本,调用聊天机器人的模型或API,返回机器人的回复,并显示在界面上。 下面从以下几个方面讲解此程序的创新和功能。 GUI功能:程序使用了Python内置库tkinter作为GUI框架,实现了对话记录、文字输入、发送按钮和头像…

使用Scala集成开发环境

一、搭建Scala的IntelliJ IDEA开发环境 (一)启动IDEA (二)安装Scala插件 启动IDEA,在欢迎界面中选择Configure→Plugins命令 在上方的搜索框中搜索scala关键字 单击绿色的【Install】按钮,安装完毕&am…

uniapp 使用app-plus自定义导航栏(titleNView)右侧自定义图标+文字按钮

前言 最近在使用uni-app写H5移动端时候,在pages.json文件配置导航栏的图标时发现不生效 去官网查阅了很久,意思是不支持本地图片,支持iconfont.ttf(iconfont本地下载)格式图片 意思是在导航栏的图标需要在iconfont图…