Foxtable(狐表)用户栏目专家坐堂 → 排序效率


  共有2020人关注过本帖树形打印复制链接

主题:排序效率

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/25 17:54:00 [显示全部帖子]

看了一下,你的排名,根本就不需要保存。你尝试执行这个sql语句,看执行需要多长时间(自己加上where条件)

 

select rank() over(order by 折总 desc) as 折总排名, rank() over(order by 总分 desc) as 总分排名, * from {成绩}

 

如果执行时间不长,那就每次动态计算呗。

 

如果确实需要存储。你可以用update语句,如

 

update a set a.第五列=b.折总排名, a.第六列=b.总分排名 from {成绩} a, (select rank() over(order by 折总 desc) as 折总排名, rank() over(order by 总分 desc) as 总分排名, * from {成绩}) b where a.[_Identify]=b.[_Identify]


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/25 17:56:00 [显示全部帖子]

3楼的,可以处理简单的排名问题;

 

如果,需要复杂的排名,你需要在数据库那里编写存储结构排序和保存。这样就不需要加载到foxtable。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/25 18:15:00 [显示全部帖子]

 

以下是引用刘林在2018/1/25 18:06:00的发言:

a.第五列 a.第六列是什么意思

 

你成绩表的排名列,需要赋值的排名列。

[此贴子已经被作者于2018/1/25 18:21:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/25 18:19:00 [显示全部帖子]

以下是引用刘林在2018/1/25 18:09:00的发言:

还有我是要排六列数据,班序,校序,区序,总分班序,总分校序,总分区序,如何写?sql理解不到

 

看懂红色代码,拷贝多段,去sql测试窗口测试

 

select rank() over(partition by 考试名称,年级代码 order by 折总 desc) as 区折总排名, rank() over(partition by 考试名称,年级代码,单位名称,班级 order by 折总 desc) as 班折总排名, * from {成绩}

 

如果不会写,贴出数据库/表格信息测试。


 回到顶部