有一个列是ID,一个是浮点数。但是没有排名,排名就是浮点数大小。从大到小排列。通过ID得到此ID在表中的排名

解决方案 »

  1.   

    select id
    from tb
    order by 浮点数列 desc
      

  2.   


    select 排名 = (select count(1) from tb where [浮点数]>=t.[浮点数] and id <> t.id)
    from tb t
      

  3.   


    select 排名 = (select count(1) from tb where [浮点数]>=t.[浮点数] and id <> t.id)
    from tb t
    where id = 输入id
      

  4.   

    DECLARE @tb TABLE(
    ID INT,
    Val float
    )INSERT INTO @tb (ID,Val)
    SELECT 2,1.56 UNION ALL
    SELECT 5,2.38 UNION ALL
    SELECT 6,3.89 UNION ALL
    SELECT 4,4.79 UNION ALL
    SELECT 1,5.62 UNION ALL
    SELECT 3,6.68SELECT * FROM @tb;WITH OrderByVal
    AS
    (
    SELECT *,ROW_NUMBER() OVER(ORDER BY Val desc) AS rownum FROM @tb
    )SELECT rownum FROM OrderByVal WHERE ID=4
      

  5.   

    来个有语法显示的..DECLARE @tb TABLE(
    ID INT,
    Val float
    )INSERT INTO @tb (ID,Val)
    SELECT 2,1.56 UNION ALL
    SELECT 5,2.38 UNION ALL
    SELECT 6,3.89 UNION ALL
    SELECT 4,4.79 UNION ALL
    SELECT 1,5.62 UNION ALL
    SELECT 3,6.68SELECT * FROM @tb;WITH OrderByVal
    AS
    (
    SELECT *,ROW_NUMBER() OVER(ORDER BY Val desc) AS rownum FROM @tb
    )SELECT rownum FROM OrderByVal WHERE ID=4
    --------执行结果------
    (6 行受影响)
    ID          Val
    ----------- ----------------------
    2           1.56
    5           2.38
    6           3.89
    4           4.79
    1           5.62
    3           6.68(6 行受影响)rownum
    --------------------
    3(1 行受影响)