当前位置: 首页 > 面试题库 >

在MySQL中排名联合职位

劳研
2023-03-14
问题内容

以下是我所拥有的

  userid score 
    1       8    
    2       5    
    3       4    
    4       4    
    5      10    
    6       3

我想要的是如下

userid score position
    5      10     1
    1       8     2
    2       5     3
    3       4     4
    4       4     4
    6       3     5

注意:

我在输出下面创建的代码,

userid score position
    5      10     1
    1       8     2
    2       5     3
    3       4     4
    4       4     4
    6       3     6

代码是

SELECT userid, score, 
(SELECT COUNT(*) FROM fschema.mytab3 u2 
WHERE 
u2.score > u1.score) + 1 AS position FROM fschema.mytab3 u1
ORDER BY position

我希望用户6具有positionas 5而不是6


问题答案:

那这个呢?

SELECT userid, score, 
(SELECT COUNT(distinct u2.score) FROM fschema.mytab3 u2 
WHERE 
u2.score > u1.score) + 1 AS position FROM fschema.mytab3 u1
ORDER BY position


 类似资料:
  • 问题内容: 我完全为在mysql中从rank()over(按x分区,按y desc排序)创建新列“ LoginRank”而感到困惑。 从SQL Server,我将编写以下查询,以创建按“登录”分组并按“ id”排序的“ Loginrank”列。 我有下表。 我尝试将许多现有的mysql修复程序应用到我的数据集,但仍然存在问题。 任何帮助是极大的赞赏。谢谢! 问题答案: 请尝试以下查询:-MySql

  • 我需要从表中选择所有的vip并按兰德排序,然后添加按日期排序的其他数据。在第一个子查询中,一切正常,但在第二个子查询中,spa_date DESC不起作用。我知道UNION子查询中的ORDER BY子句会被忽略而没有限制(但ORDER BY rand()起作用),但我需要所有查询(1+2)中的限制,而不是子查询中的限制 问题: 我需要选择spa_vip=1的所有spa_id并按RAND()排序,然

  • 问题内容: 每个表(表1和表2)都有其自己的DATETIME字段。 我正在尝试捕获两个表的ID,并按其DATETIME字段对其进行排序。 例子: 我的输出未通过以下查询正确排序: 所需数据: 来自表2 id:2、1, 来自表1 id:3、2、1 因此:2、1、3、2、1 ////编辑 对于可能会遇到冗长而复杂的MySQL请求的人们,请在PhpmyAdmin中尝试一下!它会告诉您错误! ////编辑

  • 问题内容: 我需要找出客户的等级。在这里,我为我的需求添加了相应的ANSI标准SQL查询。请帮助我将其转换为MySQL。 有什么功能可以找出MySQL的排名吗? 问题答案: 一种选择是使用排名变量,例如: 该部分允许变量初始化,而无需单独的命令。 测试用例: 结果:

  • 问题内容: 所以我有一张桌子,如下所示: 然后,我需要对它们进行分组,排序和排序以给出: 现在,我知道您可以使用temp变量进行排名,例如此处,但是如何对分组集进行排名呢?感谢您的见解! 问题答案: 这以非常简单的方式起作用: 初始查询按第一,第二顺序排序。 并初始化为 用于测试是否输入下一组。如果的先前值(存储在中)不等于当前值(存储在中),则将其清零。否则增加。 分配了新值,并将在下一行的第3

  • 问题内容: 我需要创建一个自动在结果中添加虚拟行号的视图。这里的图完全是随机的,我要实现的是动态创建的最后一列。 查询: 问题答案: 采用: 这不是理想的方式,因为将对返回的每一行执行num值查询。更好的主意是创建一个表,其中的一列包含一个从一个开始的数字,然后递增到一个非常大的数字,然后以类似于下面的变量示例的方式联接和引用该表。 MySQL排名,或缺乏 您可以定义一个变量以获得伪行号功能,因为