asp点击按钮sql列求和_助你2020晋级互联网大数据阵营(一):轻轻松松学SQL

7631a647f1e7635208032088cf64eb91.gif

毫不负责任的说,你和数据科学家最大的鸿沟,就差一个SQL语言:)入门后,后面的事情就简单了

cab6c187eee4eac5154ebe583cba8a2b.png

为了帮大家尽快入门Hive SQL、学会提数和分析,实现在大数据领域大干一场的愿望,帮你准备好了数据,准备好了SQL样例,照着学,边学边练,主要是解决学一门新手艺起点高入手难的问题。

这个自编的课程分成如下的几个部分,欢迎大家选读选练。

  1. 特别说明

  2. 两张示例表

  3. SQL示例

  • 简单select查询

  • 使用where语句按条件筛选

  • 使用distinct语句排重

  • 使用order by语句对查询结果排序

  • 使用sum/count/avg计算总和/计数/平均值等

  • 使用group by按照分组计算

  • 子查询

  • 使用join从多张表中查询数据

  • 使用union all拼接多份数据

  • 使用case when控制列输出

SQL高级教程(待续)

1. 特别说明

本文中使用的数据集是从网上下来的测试数据,数据地址:https://github.com/markgrover/cloudcon-hive

2. 两张示例表

为了方便练习SQL语法,特地准备了两张hive表,ide_test.flightside_test.airports, 表结构如下面的建表语句。另外两张表中各有数行测试数据,可以在练习SQL时直接使用。

Flights表

CREATE TABLE `ide_test.flights`(`year` string COMMENT 'year',`month` string COMMENT 'month',`day` string COMMENT 'day',`dep_time` string COMMENT '起飞时间',`crs_dep_time` string COMMENT '计划起飞时间',`arr_time` string COMMENT '到达时间',`crs_arr_time` string COMMENT '计划到达时间',`carrier_code` string COMMENT '航空公司代号',`flight_num` string COMMENT '航班号',`actual_elapsed_time` string COMMENT '实际耗时',`crs_elapsed_time` string COMMENT '计划耗时',`air_time` string COMMENT '飞行时间',`arr_delay` string COMMENT '到达延迟',`dep_delay` string COMMENT '起飞延迟',`origin` string COMMENT '起飞机场',`dest` string COMMENT '目标机场',`distance` string COMMENT '距离')COMMENT '测试数据-航班信息'
Airports表 
CREATE TABLE `ide_test.airports`(`name` string COMMENT 'name',`country` string COMMENT 'country',`area_code` string COMMENT 'area_code',`code` string COMMENT 'code')COMMENT '测试数据-机场信息'

3. SQL示例

3.1 简单select查询

使用select语句可以查看表里的数据

select用法

--查询ide_test.airports表中的name列,返回5行select name from ide_test.airports limit 5--使用 '*'代表表中所有列select * from ide_test.airports limit 5
特别提示:限制SQL返回的行数是一个好习惯,如上面的 limit 5, 表示最多返回5行数据
3.2 使用where语句按条件筛选

使用where语句,可以根据指定的条件刷选数据,例如查看航班号为335的航班信息

where用法 

select     *   -- 返回表里所有列from     ide_test.flightswhere     flight_num= '335' --返回flight_num列为'335'的记录limit 5
 Tips: where后面跟的是一个逻辑表达式,多个逻辑表达式用 AND、OR来连接
3.3 使用distinct语句排重

某一列(或多列)时常会有重复的值,有时候需要去重之后再查看,可以使用distinct语句来完成这个功能。例如查看ide_test.flights表中包含了那几年的数据,可以使用下面的SQL语句来完成:

distinct 用法

selectdistinct year  -- distinct会对year列的值去重之后,再返回from     ide_test.flightslimit 10
Tips:查看某列包含了哪些值,有更好的写法,这里只是展示下distinct语句的用法
3.4 使用order by语句对查询结果排序

找出起飞时间最晚的5个航班

order by 用法

select     origin, dest, flight_num, dep_timefrom     ide_test.flightsorder by dep_time desc-- 按照起飞时间倒序排列, desc表示由大到小排序, -- asc(或者是省略不写)表示由小到大排序 limit 5
3.5 使用sum/count/avg计算总和/计数/平均值等

使用count()函数可以计数,比如要看一下ide_test.flights表里一共有多少个航班信息,则可以这么写:

count 用法 

selectcount(flight_num) as cnt -- count函数表示计数from     ide_test.flightslimit 10

sum:表示按照指定的列求和,比如计算一下335号航班一共飞行了多少公里

sum 用法

selectsum(cast(distance as int)) as total_distance --sum函数表示求和from     ide_test.flightswhere     flight_num = '335'limit  10
Tips: count/sum这种函数叫聚合函数,还有其他聚合函数,比如avg/max/min分别用户求平均值、最大值和最小值
3.6 使用group by按照分组计算

group by语句的用处很大,它可以先对数据分组、然后再计算,看个例子就明白了。比如,要计算每个航班飞行的里程数,并按照总数由大到小取前10个,写法如下:

group by 用法

select     flight_num, sum(distance) as total_distance--除了sum/count/avg/min/max这些聚合函数之外,-- 明确写在select之后的列,必须同时出现在group by的后面from     ide_test.flightsgroup by flight_num  --按照航班号分组,对每一组的里程数求和order by total_distance desclimit  10
还有一种情况,查询总飞行里程数大于3000的航班号,这时having语句就排上用场了

having 语法

select     flight_num --写在select之后的列,必须同时出现在group by的后面from     ide_test.flightsgroup by flight_numhaving sum(distance) > 3000--刷选出飞行总里程大于3000的航班limit  5
小思考:为什么这种情况下要使用having来作为筛选条件,而不是使用where?

资料:深入理解Hive Group by语法

3.7 子查询

要计算飞行总里程大于3000的航班数量,SQL可以这么写

子查询用法

select count(1) as cntfrom (select flight_numfrom  ide_test.flightsgroup by flight_numhaving sum(distance) > 3000 ) t
Tips: 子查询的用法和普通hive表是一样的,一般为了清晰,会使用括号'()'把子查询包含起来
3.8 使用join从多张表中查询数据

假如,我们计划查询每个航班的飞行里程和起始机场名称,因为这两个信息分别存储在两张不同的hive表中,因此需要同时查询两张hive表才能得到结果,写法如下

join 用法 

select     p.flight_num, -- 从flights表取出航班号     p.distance, --从flights表取出飞行里程     q.name  --从airports表取出出发的机场名称from     ide_test.flights pleft join ide_test.airports qon p.origin = q.codelimit 10
Tips
  • left join:左表关联右表,当坐标中存在某值而右表不存在时,则右表对应信息使用null代替

  • inner join:只有左表和右表都存在对应值的时候,才出现的结果中

  • right join:与left join相反

  • full outer join:当左表或右表不存在相应值时,使用null代替

延伸阅读,做做思维操

8d4c8a801175e4ef7ebd48ca77c8ffc2.png

注意:如果A中有m条记录,B中有n条记录,A join B的时候,则最多会产生m*n条记录,想想为什么?

3.9 使用union all拼接多份数据

UNION 语句符用于合并两个或多个 SELECT 语句的结果集。

选出飞行里程大于1000或小于100的航班,SQL写法如下:

注意:这里只是为了展示union用法,显然应该有更好的写法,自己思考下:)

union 用法 

select flight_numfrom ide_test.flightswhere distance > 1000unionselect flight_numfrom ide_test.flightswhere distance < 100
Tips: 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
3.10 使用case when控制列输出

查询航班的飞行距离,按照距离分成“长、中、短”三个级别,可以借助case when语句来实现,示例写法:

case when 用法 

select flight_num, distance,case when distance > 3000 then '长距离航班'when distance > 1000 then '中距离航班'else '近距离航班'end as flight_levelfrom ide_test.flightslimit 10
Tips: 使用case when可以灵活自定义查询结果。另外case when还可以和count/sum等聚合函数使用,来实现有条件的计数/汇总

4. SQL高级教程(待续)

  • window函数

  • 处理Json格式数据

  • 处理XML格式数据

  • 行列转换

  • 使用with语法

  • 数据抽样

646f53abceba8f2d5e2128037fccefd3.png

/完

其他文章:

  • 通过在阿里的实践,谈一下中台建设的Why、When与How

  • CTO内参 | Gartner报告,近年十大战略性技术趋势:自主设备、增强分析、AI驱动的开发、数字双生、边缘计算等

  • 从党的成功经验看企业中台建设

*每次「在看」,都是鼓励* ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幂等和高并发在电商系统中的使用

在Java web项目开发中&#xff0c;经常会听到在做订单系统中生成订单的时候&#xff0c;要做幂等性控制和并发控制&#xff0c;特对此部分内容作出总结&#xff0c;在高并发场景下&#xff0c;代码层面需要实现并发控制&#xff1b;但是幂等性&#xff0c;其实更多的是系统的接…

@transactional注解失效情况

先来了解一下Transactional注解事务的特性吧&#xff0c;可以更好排查问题 1、service类标签(一般不建议在接口上)上添加Transactional&#xff0c;可以将整个类纳入spring事务管理&#xff0c;在每个业务方法执行时都会开启一个事务&#xff0c;不过这些事务采用相同的管理方…

计算机c盘隐藏了怎么办,win7怎么隐藏c盘 win7c盘被隐藏了怎么解除

很多的电脑用户担心其他用户在使用电脑时修改c盘中的重要文件&#xff0c;所以会将c盘设置为隐藏&#xff0c;那么大家知道在win7系统中怎么隐藏c盘吗?方法很简单&#xff0c;下面小编为大家带来win7隐藏c盘的详细教程&#xff0c;不知道怎么隐藏的朋友可以查看下面的教程学习…

操作系统基础:存储管理知识笔记(二)

一、分页存储管理 1、分页存储管理介绍 1.1 分页原理 页&#xff1a;将一个进程的地址空间划分为若干个大小相等的区域称为页。 块、页框&#xff1a;主存空间划分成与页相同的若干个物理块。 1.2 地址结构 分页系统地址结构&#xff1a;前一部分为页号&#xff1b;后一部分为页…

人工智能 信道估计 深度学习_DEMO演示|基于IVP02D 人工智能工作站的深度学习引擎,实现人群热力估计...

近年来&#xff0c;随着深度学习在计算机视觉领域获得广泛应用&#xff0c;算法框架也日渐成熟&#xff0c;例如基于深度神经网络的人群密度分析&#xff0c;通过自动学习能获得更有效的人群特征&#xff0c;相较于传统方法取得了一定的提高。AI小知识人群密度分析&#xff08;…

vscode kite插件_微软发布 VS Code Python 插件 7 月更新

微软发布了 7 月的 Visual Studio Code Python 扩展更新&#xff0c;此版本总共修复了 51 个问题&#xff0c;其中包括&#xff1a;支持新的语言服务器&#xff1a;PylanceGather 扩展将 Notebook 导出为 HTML 和 PDF调试器的反向连接支持新的语言服务器&#xff1a;PylancePyl…

360浏览器打不开微信的连接服务器,上午还能打开,下午360浏览器打不开微信公 – 手机爱问...

2011-08-27ie&#xff0c;搜狗&#xff0c;谷歌浏览器都打不开&#xff0c;说打不开ipad说服务器超时是新浪在更新设备吗&#xff1f;一般你能进入爱问就可以进入邮箱&#xff0c;下面的方法看看(如果你是铁通的可能是铁通的问题)。可能是服务器故障引起的&#xff0c;请不要着…

域名还能绑定动态IP?看完又涨知识了!!

点击上方蓝色“冰河技术”&#xff0c;关注并选择“设为星标”持之以恒&#xff0c;贵在坚持&#xff0c;每天进步一点点&#xff01;作者个人研发的在高并发场景下&#xff0c;提供的简单、稳定、可扩展的延迟消息队列框架&#xff0c;具有精准的定时任务和延迟队列处理功能。…

java 及时释放内存_JMM(一):初识Java内存模型

在并发编程中&#xff0c;线程之间的通信是一个很关键的问题&#xff0c;而该问题解决方案主要可分为两大类&#xff1a;消息传递、共享内存。前者有以Erlang语言为代表的Actor模型&#xff0c;而后者中典型的则是Java语言。对于消息传递机制而言&#xff0c;线程之间必须通过发…

电脑维修知识:电脑常见故障维修大全及解决方法

电脑已经成为我们学习生活娱乐必不可少的设备了&#xff0c;用得时间久了难免会遇到小故障&#xff0c;今天我们一起来看下遇到常见的电脑方面的小故障&#xff0c;我们应该如何去自己检测和维修吧。电脑检测故障我们还是要从电脑的几大硬件开始检查起。1、CPU打开机箱查看CPU风…

工程图样中粗实线的用途_图纸天天画,粗实线和细实线的线宽比例是多少?2:1还是3:1?...

点击上方头条号“机械设计一点通”关注我们&#xff0c;每天学习一个机械设计相关知识点我们知道&#xff1a;机械制图中为了表示不同内容&#xff0c;并能分清主次&#xff0c;必须使用不同线型。图线的线型由线宽和线素长度等构成&#xff0c;机械制图中各种线型都有相应宽度…

STM32F4_USART配置及细节描述

Ⅰ、概述 关于USART串口通信&#xff0c;可以说是MCU的标配。不管是在实际项目应用中&#xff0c;还是在开发过程中&#xff0c;它都起着很重要的作用。 在项目应用中我们常常使用UART串口进行通信&#xff0c;根据通信的距离及稳定性&#xff0c;还选择添加RS232、RS485等对UA…

腾讯面试:SaaS多租户,如何设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 多租户设计&#xff0c;如何 技术选型&#xff…

Mac中Finder是什么?怎么打开?

很多人都知道windows系统中的资源管理器&#xff0c;不过不知道什么是finder。finder和资源管理器一样&#xff0c;都是用来管理文件&#xff0c;finder存在于mac统中&#xff0c;那么finder有什么作用呢?下面下班就为大家分享关于mac系统中finder的相关内容。   1、怎么打开…

phpstudy页面不存在_网站的404页面对于SEO的重要作用

随着网站建设的需求和要求越来越多&#xff0c;网站的新形式也逐渐成为人们改版的方向&#xff0c;但是在网站的改版中难免会出现一些小差错&#xff0c;导致网站的运行不顺畅&#xff0c;这很有可能就是网站建设中忘记设计404页面&#xff0c;那么4040页面能给网站带来哪些好处…

计算机系统基础:虚拟存储管理知识笔记

1、虚拟存储管理概念 一个计算机任务只需要部分装入主存便可以启动运行&#xff0c;其余部分留在磁盘上&#xff0c;在需要的时候装入主存&#xff0c;这样可以提高主存空间的利用率。这样该系统所具有的主存容量会比实际主存容量大很多&#xff0c;这样的存储器称为虚拟存储器…

git推送指令配置_git 常用命令

git 简介在实际开发中&#xff0c;会使用git作为版本控制工具来完成团队协作。因此&#xff0c;对基本的git操作指令进行总结是十分有必要的&#xff0c;本文对一些术语或者理论基础&#xff0c;不重新码字&#xff0c;可以参考廖雪峰老师的博文&#xff0c;本文只对命令做归纳…

传统的线性降维方法效果不佳。_机器学习西瓜书简明笔记(11)降维与度量学习...

上篇主要介绍了几种常用的聚类算法&#xff0c;首先从距离度量与性能评估出发&#xff0c;列举了常见的距离计算公式与聚类评价指标&#xff0c;接着分别讨论了K-Means、LVQ、高斯混合聚类、密度聚类以及层次聚类算法。K-Means与LVQ都试图以类簇中心作为原型指导聚类&#xff0…

计算机系统基础:设备管理知识笔记

1、设备管理介绍 设备管理主要包括设备分配、缓冲区管理、实际物理I/O设备操作、通过管理提高设备利用率和方便用户使用的目的。 设备属于计算机系统和外界交互的工具&#xff0c;不要负责计算机和外部的输入/输出工作&#xff0c;通常称为外设。 2、设备分类 2.1 按数据组织分…

灌篮高手微信登录是什么服务器,灌篮高手微信登录版本

这款《灌篮高手》手游游戏是由同名的火爆动漫改写而成的&#xff0c;里边的游戏角色都是有极致的复原和保存&#xff0c;足球运动员特点都是有一定的展现。也有经典的动漫故事情节和每个高等院校足球队的复原。现阶段为大伙儿出示的是灌篮高手微信登录版本&#xff0c;能够和小…