oracle排名查询

lily1314 2010-05-20 01:22:25
我有这么一个表
用户 收益 推荐数 成功率(%)
a 20 4 80
b 30 2 70



每月推荐4次,若低于4只的排名将被降一档。
排名计算方法为:在以成功率分档基础上以 收益从高到低进行排名。

请问这个如何查询比较好呢?
...全文
212 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
malun666 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wildwave 的回复:]

least(greatest(8-trunc(succ_rate/10),1)+ case when stock_num<4 then 1 else 0 end,7)
[/Quote]

这才是最艺术的啊。呵呵,高手就是高手啊。楼主,没看明白这个吗?呵呵,9楼的通俗易懂,不过还是非常欣赏
wildwave 的。呵呵强悍啊
lily1314 2010-05-20
  • 打赏
  • 举报
回复
哈哈。谢谢robinpipi。给分了
robin嘟嘟 2010-05-20
  • 打赏
  • 举报
回复
case when stock_num<4 then decode(floor(succ_rate/10),6,3,5,4,4,5,3,6,2,7,1,7,0,7,2)
when stock_num>=4 and then decode(floor(succ_rate/10),6,2,5,3,4,4,3,5,2,6,1,7,0,7,1)
应该够精简了
小灰狼W 2010-05-20
  • 打赏
  • 举报
回复
least(greatest(8-trunc(succ_rate/10),1)+ case when stock_num<4 then 1 else 0 end,7)
ojuju10 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lily1314 的回复:]
SQL code
case when stock_num<4 and succ_rate >=70 then 2
when stock_num<4 and succ_rate >=60 then 3
when stock_num<4 and succ_rate >=50 then 4
when stock_num<4 and succ_rate ……
[/Quote]

每个分支的条件都不一样,无法精简
lily1314 2010-05-20
  • 打赏
  • 举报
回复
	case when stock_num<4 and succ_rate >=70 then 2
when stock_num<4 and succ_rate >=60 then 3
when stock_num<4 and succ_rate >=50 then 4
when stock_num<4 and succ_rate >=40 then 5
when stock_num<4 and succ_rate >=30 then 6
when stock_num<4 and succ_rate <30 then 7
when stock_num>4 and succ_rate >=70 then 1
when stock_num>4 and succ_rate >=60 then 2
when stock_num>4 and succ_rate >=50 then 3
when stock_num>4 and succ_rate >=40 then 4
when stock_num>4 and succ_rate >=30 then 5
when stock_num>4 and succ_rate >=20 then 6
when stock_num>4 and succ_rate <20 then 7
end as suc_level

这种语句如何精简啊
lily1314 2010-05-20
  • 打赏
  • 举报
回复
以上的应该是都没有实现 小于4,就降一挡的功能
hu3696666 2010-05-20
  • 打赏
  • 举报
回复
帮楼主 顶了
心中的彩虹 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 lily1314 的回复:]
我有这么一个表
用户 收益 推荐数 成功率(%)
a 20 4 80
b 30 2 70



每月推荐4次,若低于4只的排名将被降一档。
排名计算方法为:在以成功率分档基础上以 收益从高到低进行排名。

请问这个如何查询比较好呢?
[/Quote]


--不知道你要的是什么样的结果
select 用户,收益,推荐数,成功率,rownum 排名
from tb
order by 成功率,收益 desc

Phoenix_99 2010-05-20
  • 打赏
  • 举报
回复
select * from
(select * from table order by 成功率 desc,收益 desc)
where rownum<5;
lengyunfei006 2010-05-20
  • 打赏
  • 举报
回复
select * from
(select * from table order by 成功率 desc,收益 desc)
where rownum<5;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧