|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性好比我们有如许一个表,表名是table1,这个内外面存储了某班同砚中考一切的科目成就,假定以下:
姓名科目分数李四数学100李四语文85张三数学95张三语文90
这时候候,先生请求查出每一个科目同砚的成就排名,排名函数之前我们用的最多的就是row_number()over()了。但在默许情形下,这个排名函数是不分科目标,也就是不分组的,它会把一切的成就依照高或低举行排名
select*,ROW_NUMBER()OVER(ORDERBY[分数]desc)asid
from[table1]ORDERBY[课程]
实行失掉的查询了局以下:
姓名科目分数排名李四数学1001张三数学952张三语文903李四语文854
这并非我们想要的了局,由于数学和语文在一同排名是没有任何意义的。要完成每一个科目内的排名,我们就要在row_number()over()顶用到PARTITIONBY关头字了,PARTITIONBY的感化就是依据指定的某个列对了局集先辈行分组,再排名,好比我们这个例子中必要对课程举行分组,那末就是PARTITIONBY[课程],全体的sql以下:
select*,ROW_NUMBER()OVER(PARTITIONBY[课程]ORDERBY[分数]desc)asid
from[table1]ORDERBY[课程]
实行失掉的查询了局以下:
姓名科目分数排名李四数学1001张三数学952张三语文901李四语文852
这个就是我们想要的了局了。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。 |
|