create table pay_item
(username varchar2(2),itemname varchar2(20),allprice int,buytime date);insert into pay_item values('A','王老吉',5,to_date('2005/01/02 08:00:01','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('A','可乐',3,to_date('2005/01/02 08:00:01','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('B','雪碧',3,to_date('2005/01/02 08:00:02','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('B','可乐',6,to_date('2005/01/02 08:00:02','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('A','王老吉',5,to_date('2005/01/02 08:00:03','yyyy/mm/dd hh24:mi:ss'));想得到的结果是
A 王老吉 5 1
A 可乐 3 1
B 雪碧 3 2
B 可乐 3 2
A 王老吉 5 3就是加上一个订单号,相同用户的订单号相同,如果后面他又买东西了,算做另外一个订单,不知道排名函数怎么用~
(username varchar2(2),itemname varchar2(20),allprice int,buytime date);insert into pay_item values('A','王老吉',5,to_date('2005/01/02 08:00:01','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('A','可乐',3,to_date('2005/01/02 08:00:01','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('B','雪碧',3,to_date('2005/01/02 08:00:02','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('B','可乐',6,to_date('2005/01/02 08:00:02','yyyy/mm/dd hh24:mi:ss'));
insert into pay_item values('A','王老吉',5,to_date('2005/01/02 08:00:03','yyyy/mm/dd hh24:mi:ss'));想得到的结果是
A 王老吉 5 1
A 可乐 3 1
B 雪碧 3 2
B 可乐 3 2
A 王老吉 5 3就是加上一个订单号,相同用户的订单号相同,如果后面他又买东西了,算做另外一个订单,不知道排名函数怎么用~
解决方案 »
- 在虚拟机linux上如何安装oracle 10或11g客户端?3KU!
- 我这有一条sql语句,请高手来优化!!奖励分只是其次,主要是想看看能否有高手可以解决这个问题~
- 路过的帮个忙看看,是怎么回事?
- PL/SQL 查询问题
- JOB中存储过程有dbms_output.put_line,对该过程的UPDATE,INSERT,DELETE会有影响吗?
- oracle客户端与INFORMIX客户端有冲突的!!
- sql语句 判断记录是否存在的问题
- 请教一个SQL问题!!!!!!!!!!!!!
- 怎么判断表中是否存在某列?
- 求助作过告警系统方面的朋友
- 【求助】fmx可以反编译成fmb么,或者怎样能看到代码
- 删数据库操作的进程
from (select t.* ,rownum as rn from pay_item t) p
order by p.rn
结果:
USERNAME ITEMNAME ALLPRICE RNT
A 王老吉 5 1
A 可乐 3 1
B 雪碧 3 1
B 可乐 6 2
A 王老吉 5 2
A 王老吉 5 2005-01-02 08:00:01
A 可乐 3 2005-01-02 08:00:01
B 雪碧 3 2005-01-02 08:00:02
B 可乐 6 2005-01-02 08:00:02
A 王老吉 5 2005-01-02 08:00:03你按什么规则可以排除 最后一个是3?
from (select t.* ,rownum as rn from pay_item t) p
order by p.rn
USERNAME ITEMNAME ALLPRICE RNT
A 王老吉 5 1
A 可乐 3 1
B 雪碧 3 2
B 可乐 6 2
A 王老吉 5 3晕倒,原来是直接按时间排列,昏死....
结果应为:
USERNAME ITEMNAME ALLPRICE RNT
A 王老吉 5 1
A 可乐 3 1
C 美年达 3 2
B 雪碧 3 3
B 可乐 6 3
A 王老吉 5 4
2 from pay_item t
3 /
USERNAME ITEMNAME ALLPRICE BUYTIME DENSE_RANK()OVER(ORDERBYBUYTIM
-------- -------------------- --------------------------------------- ----------- ------------------------------
A 王老吉 5 2005/1/2 8: 1
A 可乐 3 2005/1/2 8: 1
C 美年达 3 2005/1/2 8: 2
B 可乐 6 2005/1/2 8: 3
B 雪碧 3 2005/1/2 8: 3
A 王老吉 5 2005/1/2 8: 4