码迷,mamicode.com
首页 > 其他好文 > 详细

2017.8.10 习题随笔

时间:2017-08-10 19:33:15      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:tco   结果   细节   command   imp   padding   范围   row   esc   

技术分享1.between使用的小细节

在使用between 函数限定范围的时候,要注意小的在前大的在后

技术分享 

这样使用between会导致结果为“0”

代码运行结果如下

技术分享

将代码修改后

代码课正确运行

技术分享

 2.distinct使用(引)

当 distinct 作用在多个字段的时候,她只会将所有字段值都相同的记录“去重”掉

完全相同的记录,验证一下即可。添加一条记录后的表如下所示:

技术分享

再运行如下的 SQL 语句,

1
select distinct name, age from PPPRDER.CESHIDEMO

得到的结果如下所示:

技术分享

 

3.row_number()  over(partiton by colunm1 order by colunm2)

 

将表中的记录按字段 COLUMN1进行分组,按字段 COLUMN2 进行排序,其中

 

PARTITION BY:表示分组ORDER BY:表示排序

 

接下来,咱们还用表“CESHIDEMO”中的数据进行测试。首先,给出没有使用 row_number() over() 函数时查询的结果,如下所示:

 

技术分享

 

然后,运行如下 SQL 语句,

 

1
select PPPRDER.CESHIDEMO.*, row_number() over(partition by age order by name desc) from PPPRDER.CESHIDEMO

 

得到的结果如下所示:

 

技术分享

 

从上面的结果可以看出,其在原表的基础上,多了一列标有数字排序的列。那么反过来分析咱们运行的 SQL 语句,发现其确实按字段 AGE 的值进行分组了,也按字段 NAME 的值进行排序啦!因此,函数的功能得到了验证。

 

接下来,咱们就研究如何用 row_number() over() 函数实现“去重”的功能。通过观察上面的结果,咱们可以发现,如果以 NAME 分组,以 AGE 排序,然后再取每组的第一个记录或许就可以实现“去重”的功能啊!那么试试看,运行如下 SQL 语句,

 

1
2
3
4
5
6
7
/*
* 其中 rn 表示最后添加的那一列
*/
 
select * from
(select PPPRDER.CESHIDEMO.*, row_number() over(partition by name order by age desc) rn from PPPRDER.CESHIDEMO)
where rn = 1

 

运行后,得到的结果如下所示:

 

技术分享

 

2017.8.10 习题随笔

标签:tco   结果   细节   command   imp   padding   范围   row   esc   

原文地址:http://www.cnblogs.com/CCCQ/p/7337873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!