用SQL语句实现以下功能?

[复制链接]
查看11 | 回复6 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
表名: sells
字段: cardno,consumedate,cash,times
先按消费时间consumedate排序,统计出每一张卡cardno最近消费前5条记录
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
一条语句写出来,有点难度,就是写出来了,应该也不会好性能。
如果用PL/SQL写还好些。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
好像一条sql写不出来,支持一下,请高手指教。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
肯定写得出来!只是你的问题好像还抽象了点,能不能给点示例数据?比如原表数据如下:
............
...........
............
那么结果应该要如下:
.............
............
............
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
按我目前的理解,可能是这样:
select cardno,consumedate,row_number() over(partition by cardno order by consumedate desc) rn
from table_name where rn<=5 order by cardno,consumedate desc;
但实在不知道是不是你要的。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
使用row_number/rand/dense_rank按照楼上的写法实现不同形式的结果..
就符合楼主的要求了..
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
标准的TOP N SQL的需求
我的blog里有个例子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行