怎样用HQL语句查询出一个排行榜某个用户排行第几?并且查出上5条记录和下5条记录?

怎样用HQL语句查询出一个排行榜某个用户排行第几?并且查出上5条记录和下5条记录?,第1张

java:

String hql = "select myrank from "

+ "( select s.*,dense_rank() over (order by s.studentScore desc) as myrank from StudentPo s) myranktable "

+ "where myranktable.studentId 做含= "+currentUser.getStudentId()+""

数据库里面:

select myrank from 

(select s.* , rank() over (order by s.student_score desc) as myrank from student_tb s)  myranktable 

where myranktable.student_id= 13

一样一样的句子,在框架里面就不跑,简直神特么奇怪。

关于语句的拆分:

select s.* , rank() 耐春over (order by s.student_score desc) as myrank from student_tb s

这纯亩笑是根据学生成绩得到一个排序过后的表儿,最后一列 列名是 myrank。根据学生成绩排的名词。【可以把 rank() 换成dense_rank()看看效果。】

招数2:【因为总是报未识别的 token(标志),比如 走一遍 java,可能 数据库 就不认识 rank() 和 dense_rank()了。】

所以 我的 java里面这样写的:

String sql =  "select myrank from "

+ " ( select s.student_id,rank() over ( order by s.student_score desc ) as myrank from student_tb s ) "

+ " where student_id = "+currentUser.getStudentId()+""

Query query = this.getSession().createSQLQuery(sql)

List list =query.list()

this.getSession().beginTransaction().commit()

System.out.println(list)

//this.getHibernateTemplate().

Object ob = list.get(0)

String string = ob.toString()

int number = Integer.parseInt(string)

System.out.println("排名:"+number)

用排序程序。

具体步骤如下:1、将表格中的所有同学按照总成绩进行排名。

2、先选中所有数据。

3、点击开始,点击排序和筛选右嫌庆侧下拉箭头。

4、在下拉列表中选弯拦择自定义排序,出现排序对话框。

5、关键字选总成绩,排序选择数值,次序选择降序。

6、所有数据就按照总成绩从高埋者胡到低进行排列了。

SELECT

 伍悔 id,

  read_total,

(

      SELECT

          COUNT(read_total)

      FROM

          t_circle_topic

      WHERE

          ct.read_total <= read_total

  ) AS rank

FROM

  t_circle_topic AS ct

ORDER BY

  read_total DESC

扩展资料

ORDER BY 语句用于对结果集进行排序。

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照腔陪正升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中乱岁有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12541286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存