SQL

秋招轰轰烈烈展开,SQL语句作为数据分析行业最基本的一个能力,在各笔试面试中起着至关重要的作用。最近也碰到了很多SQL题,做了一些笔记,最基本的咱就不介绍了,今天就想来和大家一起分享一些易错的知识点,快来一起学习叭!

01

排序函数的区别与应用

首先,要和大家一起来学习sql的三大排序函数:ROW_NUMBER、RANK、DENSE_RANK。它们之间的区别,文字又多又复杂,不多说,咱先看图,再解释。

1、ROW_NUMBER()函数

row_number的用途的非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。

语法示例:

SELECT ROW_NUMBER() OVER (ORDER BY [SubTime] DESC) AS row_num,  * FROM [order]

2、RANK()函数

有并列,跳跃排序,有两个第二名时后边跟着的是第四名,具体看上边的图便可一目了然

语法示例:

SELECT RANK() OVER (ORDER BY [UserId])  AS rank,  * FROM [Order]

3、DESE_RANK()函数

有并列,连续排序,有两个第二名时仍然跟着第三名

语法示例:

SELECT DENSE_RANK() OVER (ORDER BY [UserId]) AS den_rank,*  FROM [Order]

02

开窗函数

与聚合函数一样,开窗函数也是对行进行聚合计算,但是普通聚合函数每组只能返回一个值,而开窗函数可以每组返回多个值。

开窗函数格式:函数名(列) OVER(选项)

开窗函数的 OVER 关键字后括号中的可以使用 PARTITION BY 子句来定义行的分区来供进行聚合计算。

下面举个实例吧:

下面的 SQL 语句用于显示每一个人员的信息以及所属城市的人员数:

select fname, fcity, fage, fsalary, count(*) over (partition by fcity)  所在城市人数  from t_person

其结果如下:

其实,细心的小伙伴已经发现了,上面我们介绍的三大排序函数,它都是高级开窗函数。来看下面这个实例,教你一步掌握开窗函数和排序函数。

要求:按不同的排序方法,将工资从高到低排名:

SELECT FName, FSalary,FAge,

RANK() OVER (ORDER BY fsalary desc)  f_RANK,
DENSE_RANK() OVER(ORDER BY fsalary desc) f_DENSE_RANK,
ROW_NUMBER() OVER(ORDER BY fsalary desc) f_ROW_NUMBER 

FROM T_Person;

结果如下:

是不是,相当清晰明了~

03

连接函数

对于连接函数,join,left join ,right join,是每次学sql的时候,基本上必须要用到的。对它的语法,我相信不用我多说了,就是想分享一张特别牛逼的图,是Cooky在一个宝藏群里收藏来的,大伙儿请收好!

04

case when 语句

CASE WHEN条件表达式函数,它类似JAVA中的IF ELSE语句。其语法如下:

CASE WHEN condition THEN result

[WHEN...THEN...]

ELSE result

END

case when有两种用法,还是通过实例来展示

它还有另一种等价的表示方法:

再看一个具体的实例:有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀

05

取极值语句

说到取极值语句,一定会想到top语句。然而我也是前不久才发现的,原来并不是所有的数据库软件,都支持select top语句。对于选取所在表格的前几行,具体可用的方法如下:

而当你要选取表格中的某几行时,可采用如下语法:

好了,今天的SQL小知识就暂时分享到这里了,等我再攒一波笔记,我们,下次再见!

 点“在看”给我一个小心心

sql top加不加括号的区别_SQL易错点大作战相关推荐

  1. js中方法调用加括号和不加括号的区别

    前言 一个页面需要使用到setInterval和setTimeout.使用过程中对于方法的调用出现了加括号和不加括号的区别,当然在其他的场景也有发生,window.load = init等等 区别 以 ...

  2. JavaScript里的函数加或不加括号的区别

    区别 加括号:代表立即执行,也代表该函数的返回值 不加括号:代表函数体本身(Function类型) 测试 1.分别alert出各自结果 <html><head><titl ...

  3. #define宏加括号和不加括号的区别

    #define 宏是在代码中不加任何验证的直接替代,当宏中包含运算符时要在最外层加括号,不然可能会出错 下面使用一个简单的例子来验证一下,代码中定义一个求两个数中最大数的宏: MAX_wrong在外层 ...

  4. js构造函数加括号与不加括号的区别

    //首先定义一个构造函数Hello function Hello(){ alert(1): } //定义一个函数表达式 var getName = function(){ alert(2): } // ...

  5. 编译程序加不加 -lpthread 的区别【转】

    阅读目录 1. 对于动态链接的程序 2. 对于静态链接的程序 3. 符号版本的作用 转自:http://www.cnblogs.com/Swartz/articles/3939382.html 作者: ...

  6. java里next 和nextline_详解Java中方法next()和nextLine()的区别与易错点

    1.基本语法 1.1基本使用方法 本篇博客重点nextLine()会读取换行('\r'),但是不会进行输出. Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字 ...

  7. python函数加括号于不加括号的区别

    一.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成 二.带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果 def test(a):ret ...

  8. python内函数名加括号和不加括号的区别,python中 函数名加括号与不加括号

    Maven之自定义archetype生成项目骨架(一) Maven之自定义archetype生成项目骨架(一) 标签: mavennexus插件 2015-07-15 16:40 2443人阅读 评论 ...

  9. matlab代码行加不加分号的区别

    在代码行的后加分号,运行结果不会显示在命令行窗口: 不加分号,变量的值会随着运行显示在命令行窗口. 如果不想命令行窗口显示太多东西,可以在代码编写的过程中加上分号,需要知道变量的值的时候在工作区进行查 ...

  10. python调用函数加不加括号

    一.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成 二.带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果

最新文章

  1. linux开机启动项6个级别_linux开机启动设置的几种方法
  2. SQL server中SET ANSI_PADDING对char、varchar、nvarchar的影响
  3. linux定时工具,Linux定时器工具
  4. Ubuntu 16.04 LTS今日发布
  5. JavaScript学习总结(二)——逻辑Not运算符详解
  6. 浅谈阀控型铅酸蓄电池在数据中心的应用与日常管理
  7. css3蒙版运动,纯CSS3制作逼真的汽车运动动画
  8. Android之Tab类总结
  9. linux vim tag,Vim基础知识之ctags 及 Taglist 插件
  10. 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...
  11. catch 语句的参数
  12. python获取键盘按键键值_python获取键盘输的值
  13. web 前端routine
  14. [原]逆向iOS SDK -- “添加本地通知”的流程分析
  15. 简单的php cms,30个很棒的PHP开源CMS内容管理系统
  16. rman备份优化思路
  17. 基于Arduino的循迹小车
  18. 关于EMS,邮政快递包裹,邮政标准快递,邮政小包,EMS经济快递
  19. 阿里云迎来了又一轮“刚需”
  20. 一文搞懂H264量化原理以及计算过程

热门文章

  1. 我的第二个切换图片高亮显示,给力
  2. python 判断 windows 隐藏文件/系统文件
  3. Windows server 2012远程桌面会话主机和远程桌面授权,server2012
  4. linux系统学习第二天
  5. React Native填坑之旅--Button篇
  6. Handler处理机制
  7. 迷宫最短路径-货郎担问题的解决思路
  8. VMware下虚拟系统上网与互ping
  9. web服务器和数据库服务器不在同一台机器上,如何连接?
  10. bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程