本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
诡异的fetch first n rows only !!
诡异的fetch first n rows only !!
前天解决了系统一个历史科目分页查询的bug,虽然当时解决了,但并不知道造成bug的具体原因。于是,这两天通过查资料和测试终于知道了bug产生的原因
bug描述:系统在分页查询的时候,从第2页开始,以后的每一页数据都和第2页数据相同的,正确的情况应该是每页都不相同的
数据描述:历史科目表中的数据每天都会有数据 ...
用普通sql代替row_number函数
在sqllite这样的数据库里没有row_number或者rank这样的分析函数, 但有时候需要实现一些需求比如取各班的成绩第一名的学生,这时候如果数据库里没有分析函数,也可以使用普通sql来解决。
CREATE TABLE stugrade (
stuid VARCHAR(10),
stuname VARCHAR(100) not NULL,
score INT,
classid VARC ...
hive row_number分组排序top
自从hive 0.11.0 开始,加入了类似orcle的分析函数,很强大,可以查询到分组排序top值
使用方法跟oracle没有差别
贴个小例子
查询的是同一个操作下pv前十的用户
select
*
,row_number() OVER(PARTITION BY t3.action ORDER BY pv desc) AS flag
from
(
select
acti ...
hive中使用标准sql实现分组内排序
在hive中,想要实现分组内排序,一般都是自己写udf实现oracle中分析函数row_number() over(partition)的功能,如果不使用自定义udf,仅使用标准sql实现的话,毫无性能可言,仅做实验而已。
方便起见,以下语句为oracle中语句,但都属于标准sql,在hive中亦可:
CREATE TABLE lxw_t (user_id VARCHAR2(20) ...
Oracle 中关键字Rank ,Dense_Rank ,Row_Number的使用
以前在使用oracle数据库的时候,单纯的order by 字段 ASC (DESC)对数据集进行排序时,没有办法直接获得排名,必须遍历结果集的时候,自定义排序编号,最近看到一个好办法,在此分享下。。
主要介绍3种不同的排序方法并完成排名
一、使用Rank关键字
Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一 ...
oracle为相同行记录增加序号列(row_number()函数)
文章提取自 : http://blog.sina.com.cn/s/blog_475839a50100s2q3.html
表结构及测试数据如下:
CREATE TABLE t_row_str(
ID INT,
col VARCHAR2(10));
INSERT INTO t_row_str VALUES(1,'a');
INSERT INTO t_row_str VALUE ...
获得每个班的前两名学生
群里有个朋友问了一个是sql查询的问题:“获得每个班的两名学生姓名 和班级编号” 要求每个班的学生要在一起 , 我没有构建相应的表,通过项目中现有的用户表,进行了查询,sql如下:
SELECT user_name , sp_id , rank FROM (
SELECT u.user_name ,u.sp_id, row_number() OVER(PARTITION BY u.sp_id ...
HIVE中row_number函数的描述与使用场景
假设一个场景:存在表user_score,该表的数据如下
idratescore1'0-4'102'0-4'403'0-4'304'0-4'205'5-10'106'5-10'407'5-10'308'5-10'209'11-20'1010'11-20'4011'11-20'3012'11-20'20
现在要求用一条查询语句取出每种rate下score最大的两条记录,也就算取出id为:2,3,6,7 ...
oracle rank
oracle中 没有入sql server的top,但是可以用rank | percent_rank | row_number | dense_rank等等函数来完成,
如我要取我查询结构的前百分之80的数据:
select count(*) from(
SELECT t.finishtime - t.receivetime laboredtime,
percent ...
row_number() /rank()/dense_rank()
rank()函数主要用于排序,并给出序号 dense_rank():功能同rank()一样,区别在于,rank()对于排序并的数据给予相同序号,接下来的数据序号直接跳中跃,dense_rank()则不是row_number()涵数则是按照顺序依次使用,相当于我们普通查询里的rownum值比如数据: 1,2,2,4,5,6。。。这是rank()的形式 1,2,2,3,4,5。。。这是dense_ra ...
oracle over函数用法
1,初始化脚本
create table emp(deptno varchar2(10),ename varchar2(20),sal number(10,0));
insert into emp(deptno,ename,sal)values('20',trim('ADAMS '), 1100 );
insert into emp(deptno,ename, ...