精华内容
下载资源
问答
  • 数据表employee 如图 每个部门的工资排序并有名次 ## 先(部门,薪水)去重,再 部门(升),薪水(降) 排序 SELECT te.DepartmentId, te.Salary,... WHEN @pre = DepartmentId THEN @rank:= @rank + 1 WHEN @pre := De...

    数据表 employee 如图

    每个部门的工资排序并有名次

    ## 先(部门,薪水)去重,再 部门(升),薪水(降) 排序
    SELECT te.DepartmentId, te.Salary,
           CASE 
                WHEN @pre = DepartmentId THEN @rank:= @rank + 1
                WHEN @pre := DepartmentId THEN @rank:= 1
           END AS RANK
    FROM (SELECT @pre:=null, @rank:=0)tt,
    ## (部门,薪水)去重,根据 部门(升),薪水(降) 排序
         (
             SELECT DepartmentId,Salary
             FROM Employee
             GROUP BY DepartmentId,Salary
             ORDER BY DepartmentId,Salary DESC
         )te

    查询结果

     

     

    展开全文
  • 首先是想要对mysql数据库中查询到的列表数据进行一个排名,因为有分页排序等一堆条件就想着直接在sql上实现,但MySQL不存在类似于SQL Server或Orcal中的rank()函数,最终决定使用手动定义变量的方式来做 sql语句中...

    首先是想要对mysql数据库中查询到的列表数据进行一个排名,因为有分页排序等一堆条件就想着直接在sql上实现,但MySQL不存在类似于SQL Server或Orcal中的rank()函数,最终决定使用手动定义变量的方式来做

    • sql语句中,使用@来定义一个变量。如:@abc
    • sql语句中,使用:=来给变量赋值,:@abc:=123,则变量abc的值为123
    • sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:@abc := if(2>1,100,200)的结果是,abc的值为100。

    先在Navicat上编写sql,,定义curRank 变量初始值为0,每次查询加1

    set @curRank := 0;
    
    SELECT @curRank := @curRank + 1 as rank, 
    a.uid uid FROM user a ORDER BY a.totalenergy desc

    执行成功

     

    然后复制到项目里跑

     果然,担心的一幕出现了,mybatis 不支持这种写法!!!

    后来经过一系列挣扎(省略号...

    其实mybatis 是支持 自定义变量的

    网上这样说:

    但是我试了还是不行(后来发现可能是我写错了符号)最终改写:

      <select id="selectList" resultType="com.***.Entity">
          <![CDATA[
            SELECT @curRank := @curRank + 1 as rank,
            a.uid uid,
            a.name name,
            a.headimg headimg
            FROM user a, (SELECT @curRank:=0) r
          ]]>
          <if test="ids != null">
            where a.uid in (${ids})
          </if>
           ORDER BY a.totalenergy desc
      </select>

    定义变量SELECT @curRank:=0放到了子查询里,两条sql语句合二为一,最终成功执行

    ps:在实验的时候yml文件里的数据库url连接上加了一行&allowMultiQueries=true,如果还是有问题就加上(偷个懒我就不研究了,有明白的小伙伴可留意告知)

     

    展开全文
  • MySQL中rank函数实现(@i := 0)

    千次阅读 2019-09-20 17:46:43
    要在mysql中声明一个变量,你必须在变量名之前使用@符号。FROM子句中的(@i := 0)部分允许我们进行变量初始化 数据来源: ... 在MySQL中实现Rank高级排名函数 https://www.jianshu....

     

     

    要在mysql中声明一个变量,你必须在变量名之前使用@符号。FROM子句中的(@i := 0)部分允许我们进行变量初始化

     

     

    数据来源:

    https://blog.csdn.net/fashion2014/article/details/78826299#commentsedit

     

    在MySQL中实现Rank高级排名函数

    https://www.jianshu.com/p/bb1b72a1623e

    https://www.cnblogs.com/bjwylpx/p/5345162.html

    展开全文
  • mysql rank 排序

    2018-07-12 10:45:30
    原题链接:https://leetcode.com/problems/rank-scores/ scores表 +----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 | 3.65 | | 3 | 4.00 | | 4...

    scores表
    +----+-------+
    | Id | Score |
    +----+-------+
    | 1  | 3.50  |
    | 2  | 3.65  |
    | 3  | 4.00  |
    | 4  | 3.85  |
    | 5  | 4.00  |
    | 6  | 3.65  |
    +----+-------+
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    按照分数排名
    +-------+------+
    | Score | Rank |
    +-------+------+
    | 4.00  | 1    |
    | 4.00  | 1    |
    | 3.85  | 2    |
    | 3.65  | 3    |
    | 3.65  | 3    |
    | 3.50  | 4    |
    +-------+------+
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1:思路

    首先定义 初始排名的值的0, 然后 查询的每一条数据 @rank这个变量就会+1。 
    这就是一个比较简单的排名, 但是你会发现 score数值一样的话,排名应该是一样的,因此这个并不正确。
    
    mysql> set @rank = 0;
    mysql> select score, (@rank := @rank + 1) as rank from scores order by score desc;
    +-------+------+
    | score | rank |
    +-------+------+
    |  4.00 |    1 |
    |  4.00 |    2 |
    |  3.85 |    3 |
    |  3.65 |    4 |
    |  3.65 |    5 |
    |  3.50 |    6 |
    +-------+------+
    6 rows in set (0.00 sec)
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2:比较前一个数值

    mysql> set @rank = 0; 
    
    Query OK, 0 rows affected (0.00 sec)

    mysql> set @prev = null;
    Query OK, 0 rows affected (0.00 sec)

    mysql> select score, if (@prev = score, @rank ,@rank := @rank + 1 ) as Rank , (@prev := score) as tmp from scores order by score desc;
    +——-+——+——+

    | score | Rank | tmp |
    +——-+——+——+

    | 4.00 | 1 | 4.00 |
    | 4.00 | 1 | 4.00 |
    | 3.85 | 2 | 3.85 |
    | 3.65 | 3 | 3.65 |
    | 3.65 | 3 | 3.65 |
    | 3.50 | 4 | 3.50 |
    +——-+——+——+

    6 rows in set (0.00 sec)

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18



    展开全文
  • MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER

    万次阅读 多人点赞 2019-07-04 09:28:42
    排名分类1.1 区别RANK,DENSE_RANK和ROW_NUMBER1.2 分组排名2. 准备数据3. 不分组排名3.1 连续排名3.2 并列跳跃排名3.3 并列连续排名4. 分组排名4.1 分组连续排名4.2 分组并列跳跃排名4.3 分组并列连续排名 在...
  • select * from(select *,@rank:=@rank+1 as rank from 你的表名) as dd where dd.rank%间隔参数=0; 这个语句,@rank:=@rank+1的“=”附近有错,请指点?
  • SQL语句题目rank排名

    千次阅读 2019-04-28 17:41:23
    left join (select a.age,@rank :=@rank + 1 as rank1 from (select age from players group by age) a ,(select @rank:=0) tmp ORDER BY a.age desc ) tmp on p.age=tmp.age order by p.age desc,p.name desc; ...
  • # Mysql排序、组内排序

    2020-04-28 13:29:28
    Mysql 排序、组内排序 显示排序编号 1.根据降序排序给查询的结果增加一列显示排序的编号:排序...SELECT x.*,@rank :=@rank + 1 AS rank_no FROM ( SELECT * FROM jobs ORDER BY max_salary DESC ) x,(SELECT @r...
  • rank 排行 别名 映射

    2017-06-22 18:35:05
    @rank:=@rank +1 AS rank FROM (SELECT EXP,GOLD_COIN,USER_ID as ACCOUNT_USER_ID, USER_ID,SEX,NICK_NAME,MOBILE,HONOR_NAME,CREATE_TIME FROM ( (SELECT EXP,GOLD_COIN,USER_ID as ACCOUNT_USER_ID FROM ...
  • SELECT name, time, @curRank := @curRank + 1 AS rank FROM 表名, ( SELECT @curRank := 0 ) q ORDER BY time 1.要在mysql中声明一个变量,你必须在变量名之前使用@符号。FROM子句中的(@curRank := 0)部分允许...
  • 分组排名:例子 SELECT DISTINCT salary, deparment FROM ( SELECT deparment, salary, @rank := IF ( @dep = deparment, IF ( @sal = salary, @rank :=@rank, @rank :=@rank + 1 ), 1 ) AS rank, @sal := salary, ...
  • 最近部门换了一款BI工具,因为要根据筛选条件动态选取TOP10、实现排序排名功能,需要在BI工具中写mysql数据库的脚本,因为要实现ow_number()、rank()、dense_rank()函数功能,看了网上的一些资料,感觉脚本和数据...
  • select ADDDATE(‘1970-01-05’, INTERVAL FLOOR(DATEDIFF(nowtime, ‘1970-01-05’) / 7) * 7 DAY) as...FROM rank, (select @prev_value:=NULL) as pre, (select @rank_count:=0) as rank_ ORDER BY score DESC ;
  • 机器学习中常用的评测指标为:Rank-n、Precision & Recall、F-score、Map 、CMC、ROC Single shot 和Muti shot,下面一个个进行介绍。 写到这里方便以后查看 Rank-n和Map 均是衡量算法搜索能力的指标。 Rank-n ...
  • MySQL中实现rank排名查询

    万次阅读 多人点赞 2018-06-06 17:11:55
    在MySQL中,不存在类似于SQL Server或Orcal等中的rank()函数来得到排名;所以我们需要手动地写这个rank功能。 基本知识: sql语句中,使用@来定义一个变量。如:@abc sql语句中,使用:=来给变量赋值,:@abc:=123,...
  • Number tmp = essay.get("rank"); rank = tmp.intValue(); // Object tmp = essay.get("rank"); // if(tmp instanceof Long){ // rank = (int)tmp; // }else if(tmp instanceof ...
  • SELECT id FROM ( ... IF(@x=uo.apply_id,@rank:=@rank+1,@rank:=1) rank,#处理排名,如果@x等于user_id,则表示@x被初始化,将@rank自增1 @x:=uo.apply_id, # 初始化@x,@x为中间变量,在rank之后初始化,所
  • 在低于Mysql8.0之前的版本中,要对序列进行排序的话需要用到自定义参数@,但是8.0+版本中加入了oracle中的窗口函数,rank()、row_num()、dense_rank()等函数。 下面简单举几个例子介绍下这几个函数的应用。测试用的...
  • mysql给数据排序,更新rank

    千次阅读 2019-01-17 16:50:56
    SET @C = 0;SET @A = ''; UPDATE `cifi_bi`.`rp_pr_my_monthly_report_m_sign` d SET d.`rank` =  (  SELECT   CASE WHEN d.`id` is not null  THEN @C := @C + 1  ELSE  (@C := @C +...
  • CREATE TABLE `rank_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `class` int(255) DEFAULT NULL, `score` int(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=...
  • MySQL中不存在类似于SQL Server或Orcal中的rank()函数来得到排名。所以我们需要手动来时先这个函数,先看一下应用场景: 查询每门课成绩最好的前两名: select cid,score,rank from (select tmp.cid,tmp.score,if(@...
  • mysql排序

    2016-01-04 13:37:59
    SELECT A.*, @rank:=@rank+1 AS rank FROM  (SELECT id,CODE,title FROM knowledge)A, (SELECT @rank:=0) B ;  if(@usert=user_tmp.code,@rank:=@rank+1,@rank:=1) as rank, (select @usert := null
  • 还是先运行**@rank:=if(@gen=gender,@rank+1,1) rank**,此时的@gen是等于gender,根据IF会返回@rank+1 然后赋值到@rank,直到遇到下一个不一样的gender,@rank 才会重新变成1 三:变量赋值顺序 我们通过看个...
  • 文章目录 1、Rank 2、视图 ①什么是视图 ②为什么要使用视图 ③应用场景 ④有关于视图更新 1、Rank 给出不同的用户的分数,然后根据分数计算排名 mysql> create table test_rank(id int, score int); mysql> insert ...
  • @j:=@j+1 as j, -- 只有在前后二次排序值不同时才会使用顺序号 @k:=(case WHEN @pre_score=tmp.score THEN @k ELSE @j END) as rank, @pre_score:=tmp.score as pre_score FROM ( -- 成绩排序 SELECT * FROM ...
  • 盘点这些年踩过的坑,前几天分配到一个任务,写一个分类,为了方便,我特意在设计表结构的时候加了一个级别的字段,用的是rank英文字母,声明一下当时,开发环境使用的数据库是mysql5.7,生产是mysql8,当时在本地跑...
  • select id, name, DENSE_RANK() OVER(order by score desc) as dense_r from students; select id, name, row_number() OVER(order by score desc) as row_r from students; 当然也可以写在同一张表中: ...
  • hibernate中hql语句获取名次rank()问题

    千次阅读 2014-11-11 09:11:01
    return "rank() over(order by " + args.get(0) + ") "; } } <pre name="code" class="java">// 自定义言类,替换beans.xml默认方言 public class SQLServer2005Dialect extends SQLServerDialect { public ...
  • 需求:求行业底下关键词排名前五的数据 SELECT industry,key_word,rate,new_rank as rank from  ...IF(@tmp=industry,@rank:=@rank + 1,@rank:=1) as new_rank, @tmp:=industry as tmp FROM  `config_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,395
精华内容 74,958
关键字:

@Rank