关于SQL语句的总结

    最近在做一个大数据相关项目,前期主要是写一些SQL脚本从数据源中提取数据进行分析。由于本人之前对SQL的使用不是特别多,所以也遇到不少坑,特此总结一下。

一、排序

说到排序,主要会使用到如下函数:ROW_NUMBER(),RANK(),DENSE_RANK(),下面开始详细介绍。

PS:在MySQL中没有这些函数,需要在SQLserver和Oracle中使用。

为了更好理解,先创建个人员成绩表:


1、ROW_NUMBER()

定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,一般多用于分页查询, 

比如查询前10条 查询10-100条。

:select  ROW_NUMBER()  over( order by user_score desc) number, * from userscore



2、RANK()

定义RANK()函数,排名函数,可以对某一个字段进行排名,这里为什么和ROW_NUMBER()不一样那,ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样出现相同的,他们的排名是一样的。

例:select  RANK()  over( order by user_score desc) user_rank, * from userscore



3、DENSE_RANK()

定义:DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名。但是DENSE_RANK()排名是连续的,RANK()是跳跃的排名,所以一般情况下用的排名函数就是RANK()。

select  DENSE_RANK()  over( order by user_score desc) user_rank, * from userscore



二、查询最近一个月内容

在项目中,经常会有按日期查询的需求,一般可以使用add_months()—oracle, adddate()—mysql,下面举例说明如何查询最近一个月的内容

创建带日期的人员成绩表


:select * from userscore where score_date > add_months(sysdate, -1) order by user_id, user_score asc


ps:当前日期2018-07-21


三、类型转换

SQL中一般有两个类型转换函数:

1、CAST ( expression AS data_type) 

2、CONVERT ( data_type, expression,[style]) —styl可以为空,其指明要转换的格式

以上就是最近使用到SQL的一些总结,都是些比较常用的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值