1.软文推荐

2.软文推荐

3.软文推荐

Select Fromsql里面最基本的查询语句,select*from后面加表名,这样查询出来是这个表里面的所以数据,后面还可以加where条件挑选,也能够加Orderby排序,也能够加groupby分组,下面为大家分享一下SQL-Hive中Select Fromsql具体使用方法。

01-查询表中的内容

查询指定的某一列或某几列,命令如下:

SELECT 列名1,列名2,…… FROM 表名;

查询表中的所有字段时,可以使用代表所有字段。星号()是选取所有列的快捷方式。命令如下:

SELECT * FROM 表名;

如果我们想查询表 t_od_use_cnt 中的所有的user_id和use_cnt,具体命令如下:

SELECT user_id
     ,use_cnt
FROM app.t_od_use_cnt;

备注:app是数据库名,如果当前查询表与当前使用数据库一致,可以省略不写

02-Hive严格模式

在Hive中这样写虽然语法正确(不加分区),但在实际工作中这样写很可能会报错。

因为Hive中的表一般数据量极大,为了防止用户误操作进行全表扫描,可以设置为查询分区表时必须加入分区限制。比如这里我们的分区字段是date_8这个日期字段,工作中的表会要求我们必须限定查询哪几天的分区数据。这里我们可以输入设置参数进行模拟,命令如下:

hive (app)> set hive.mapred.mode;
hive.mapred.mode=nonstrict
hive (app)> set hive.mapred.mode=strict;
hive (app)> set hive.mapred.mode;
hive.mapred.mode=strict

然后我们重新执行上面的查询语句,报错如下:

hive (app)> SELECT user_id
         >       ,use_cnt
         > FROM app.t_od_use_cnt;
FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "t_od_use_cnt" Table "t_od_use_cnt"
hive (app)>  

如下使用where语句限定分区即可解决这个问题:

SELECT user_id
     ,use_cnt
FROM app.t_od_use_cnt
WHERE date_8 = '20210420';
03-limit限制查询返回行数

上面的查询语句会返回查询到的所有数据,但有时候我们只是要确认一下表中的数据内容,或者要指定行数据,比如只要100行,这时只需要在查询语句后加上(limit 数字)即可。

查询表t_od_use_cnt中前5行数据,命令如下:

SELECT user_id
     ,use_cnt
FROM app.t_od_use_cnt
WHERE date_8 = 20190101 Limit 5;

运行结果如下:

hive (app)> SELECT user_id
         >       ,use_cnt
         > FROM app.t_od_use_cnt
         > WHERE date_8 = 20210420 Limit 5;
OK
user_id  use_cnt
10000  6
10001  49
10002  23
10003  1
10004  29
Time taken: 0.829 seconds, Fetched: 5 row(s)
hive (app)>
04-列四则运算

在查询时可以对数值类型的字段进行加减乘除和取余等四则运算

下面我们将表t_od_use_cnt中use_cnt列和is_active列相乘得到一个新列,其他用法依次类推。

hive (app)> SELECT user_id         >       ,use_cnt         >       ,is_active         >       ,use_cnt * is_active         > FROM app.t_od_use_cnt         > WHERE date_8 = 20210420 Limit 5;OKuser_id  use_cnt  is_active  _c310000  6  1  610001  49  1  4910002  23  1  2310003  1  0  010004  29  1  29Time taken: 0.124 seconds, Fetched: 5 row(s)hive (app)>
05-列别名

可以看到上面的例子中我们通过两个列相乘人为制造出一个新列,系统默认将其列名起为_c3。通常有必要给这些新产生的列起一个别名。已有列的列名如果含义不清晰也可以通过起别名的方式进行更改。不过别名只在本条SQL语句中生效,不影响原表中的字段名。

这里顺便介绍一下字段命名规则:

1.不能和已有字段重复

2.只能包括小写字母(a-z)、数字(0-9)、下划线(_)

3.以字母开头

4.单词之间用下划线_分割

这里我们将别名起为active_use_cnt,在列后面加 AS active_use_cnt即可。另AS可以省略,只用空格分隔别名也可以生效

hive (app)> SELECT user_id
         >       ,use_cnt
         >       ,is_active
         >       ,use_cnt * is_active AS active_use_cnt
         > FROM app.t_od_use_cnt
         > WHERE date_8 = 20210420 Limit 5;
OK
user_id  use_cnt  is_active  active_use_cnt
10000  6  1  6
10001  49  1  49
10002  23  1  23
10003  1  0  0
10004  29  1  29
Time taken: 0.239 seconds, Fetched: 5 row(s)
hive (app)>

本文来源:www.lxlinux.net/3991.html,若引用不当,请联系修改。

相关文章 8

1

Linux下调试python代码 36秒前

Linux下如何调试python代码?前两篇文章分别为大家分享了Linux下调试C\C++代码的相关方法,本篇文章为大家分享一下Linux下调试python代码具体方...

2

富阳搜索优化价格(富阳搜索优化价格的公司) 2分钟前

目录:1、SEO优化一般都多少钱?2、网站优化一般怎么收费的?3、网站SEO优化要多少钱4、SEO优化一个网站需要多少费用SEO优化一般都多少钱...

3

详解MySQL触发器使用方法 3分钟前

触发器 是一种特殊类型的存储过程,它不同于存储过程,主要是通过事件触发而被执行的,即不是主动调用而执行的;而存储过程则需要主...

4

资讯门户网站优化(资讯推广平台) 5分钟前

目录:1、门户网站如何进行seo优化?2、新闻类网站如何进行网站优化3、门户网站如何进行优化门户网站如何进行seo优化? 随着网络时代越...

5

Linux关机前查看在线用户并发出通知 8分钟前

Linux关机前如何查看在线用户?本篇文章重点为大家讲解一下Linux关机前查看在线用户具体方法,有需要的小伙伴可以参考一下。 第1步:查...

6

香港云服务器最便宜价格(香港云服务器最便宜价格多少) 13分钟前

目录:1、用香港服务器一年要花多少钱?2、香港服务器一年多少钱3、购买云服务器需要多少钱4、香港服务器租用价格大概是多少??5、香港...

7

Zabbix-3.0.3实现微信(WeChat)告警 16分钟前

Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告...

8

宝塔面板命令(宝塔面板命令失效) 19分钟前

目录:1、宝塔面板SSH命令安装php2、如何将下图宝塔面板中的docker配置用命令写出来?3、Bt(宝塔面板)忘记用户名账号密码的解决方案 一条命...