informix中实现oracle中row_number() over(partition by deptno order by sal desc)功能

ilovewcq 2012-05-22 05:48:14

在informix中实现oracle中 select ename , num from(select ename,job,deptno,sal,(row_number() over(partition by deptno order by sal desc)) as num from 表名) where num =3; 的功能,在线等万分感谢
...全文
1351 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
youlingsxcn 2012-06-24
  • 打赏
  • 举报
回复
存储过程实现吧 我前边也碰到类似这样的问题了 通常说法 貌似是:“分类排序取前几”
ilovewcq 2012-05-24
  • 打赏
  • 举报
回复
恩 是 用存储过程可以实现。
  • 打赏
  • 举报
回复
没有表的结构,看不出对应的关系。
有些读取,可能一个SQL达不到,可以用存储过程,根据你的叙述,应该不难。
  • 打赏
  • 举报
回复
我怎么知道有哪些字段?
上点数据很难么?
ilovewcq 2012-05-23
  • 打赏
  • 举报
回复
在线等,求人帮忙啊,万分感谢,对informix不是特熟悉
ilovewcq 2012-05-23
  • 打赏
  • 举报
回复
有人解答吗,万分感谢,下线等啊。
ilovewcq 2012-05-23
  • 打赏
  • 举报
回复
就是按字段a分组查询,在每个组内又按字段b降序排序,然后要查出来每个分组中第3大的数据。
  • 打赏
  • 举报
回复
oracle不熟。
能不能上点表的结构,数据和你要的结果。
ilovewcq 2012-05-23
  • 打赏
  • 举报
回复
SELECT
CITY.PROVINCE_NAME,
CITY.CITY_NAME,
CELL.TCH_NUM,
CELL.STATIC_PDCH_NBR,
TPACELL.TCH_TRAFFIC_FULL,
TPACELL.TCH_TRAFFIC_HALF,
TPAGSM.WIRELESS_UTILIZING_RATE,
TPAGPRS.M_OCCUPY_PDCH,
ROW_NUMBER() OVER (PARTITION BY CELL.INT_ID ORDER BY TPAGSM.WIRELESS_UTILIZING_RATE DESC) RANK
FROM TCC_CELL CELL
INNER JOIN TPA_PM_SUBJECT_GSM TPAGSM
ON CELL.INT_ID = TPAGSM.INT_ID
INNER JOIN TPA_STS_CELL_OTH_NE TPACELL
ON CELL.INT_ID = TPACELL.INT_ID
INNER JOIN TPA_STS_CELL_GPRS_OTH_NE TPAGPRS
ON CELL.INT_ID = TPAGPRS.INT_ID
INNER JOIN REGION_CITY CITY
ON CITY.CITY_ID = CELL.CITY_ID



oracle中这样写的。 就是按照CELL 表中的INT_ID 分组,然后每组内按照TPAGSM表内的WIRELESS_UTILIZING_RATE 降序排列。 然后把每个分组内的第三个数据都给查询出来。
比如说cell表 INT_ID TPAGSM 中的 WIRELESS_UTILIZING_RATE
1 1
2 2
1 3
2 1
2 1
1 2
INT_ID WIRELESS_UTILIZING_RATE
1 1
1 2
1 3
2 1
2 1
2 2
排序后就是上面这样子,最后要的结果就是 把1 3这行, 和2 2 这行,也就是每个分组中第三大的数据找出来,实际上每组可能有很多数据不止3条。大概就是这个意思。帮下忙吧。

1,194

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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