求高手帮忙 SQL

feixuemengying 2009-04-04 02:36:54
三个用户A B C
A 今天发了30条信息
B 昨天发了30条信息
c 今天发了30条信息,但早于A

要求: 第一,用户必须交叉排序,第二,某一个用户的信息必须是最新的在最前面
查询结果为:A1,C1,B1,A2,C2,B2.....A30,C30,B30
求各位sql高手帮忙
在线等!!!!
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixuemengying 2009-04-04
  • 打赏
  • 举报
回复
谢谢
bw555 2009-04-04
  • 打赏
  • 举报
回复
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。
下面例子中使用的表来自Oracle自带的HR用户下的表,如果没有安装该用户,可以在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建。
少数几个例子需要访问SH用户下的表,如果没有安装该用户,可以在SYS用户下运行$ORACLE_HOME/demo/schema/sales_history/sh_main.sql来创建。
如果未指明缺省是在HR用户下运行例子。
开窗函数的理解:
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
over(order by salary) 按照salary排序进行累计,
order by是个默认的开窗函数
over(partition by deptno)按照部门分区
over(order by salary range between 50 preceding and 150 following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
over(order by salary rows between 50 preceding and 150 following)每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)每行对应的数据窗口是从第一行到最后一行,等效:over(order by salary range between unbounded preceding and unbounded following)

ROW_NUMBER 功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。
SAMPLE:下例返回每个员工再在每个部门中按员工号排序后的顺序号
SELECT department_id
, last_name
, employee_id
, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
FROM employees
WHERE department_id < 50;

feixuemengying 2009-04-04
  • 打赏
  • 举报
回复
请问row_number()是函数吗? over是什么意思 partition by t.用户 order by t.留言时间 desc呢?
fosjos 2009-04-04
  • 打赏
  • 举报
回复
select t.*, row_number() over (partition by t.用户 order by t.留言时间 desc) row
from 表 t order by row, t.用户

order by用户可以不要,row_number...也可以直接放在order by后面
feixuemengying 2009-04-04
  • 打赏
  • 举报
回复
表里只有 留言id 留言时间 留言 用户四个字段
yf520gn 2009-04-04
  • 打赏
  • 举报
回复
又来出谜语?
样例数据和表结构都不给~

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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