ID     名称        分数  1      小丽         15
  2      小明         20
  3      小强         20
  4      小张         10
  5      小闯         15
要求统计排名之后:  排名      姓名      分数
 
  1      小明         20
  1      小强         20  
  2      小闯         15
  2      小丽         15
  3      小张         10
简单化就是分数一样的人,要求并列排名!!!!

解决方案 »

  1.   

    select rank() over(order by [分数]) as 排名,姓名,分数
    from tb
      

  2.   

    select 排名=(select count(*) from tb where t.分数<分数)+1,
    姓名,分数
    from tb t 
      

  3.   

    select (select count(*) from (select distinct 分数 from tb) where 分数>=a.分数) as 排名,名称,分数
    from tb a
      

  4.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-03-31 09:47:57
    --  Version:Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) 
    --          Mar 29 2009 10:27:29 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([ID] INT,[名称] NVARCHAR(10),[分数] INT)
    INSERT [tb]
    SELECT 1,N'小丽',15 UNION ALL
    SELECT 2,N'小明',20 UNION ALL
    SELECT 3,N'小强',20 UNION ALL
    SELECT 4,N'小张',10 UNION ALL
    SELECT 5,N'小闯',15
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    SELECT 排名=DENSE_RANK()OVER(ORDER BY [分数] DESC),
    名称,分数
    FROM TB
    /*
    排名                   名称         分数
    -------------------- ---------- -----------
    1                    小明         20
    1                    小强         20
    2                    小丽         15
    2                    小闯         15
    3                    小张         10(5 行受影响)
    */
      

  5.   

    create table tb(ID int , 名称 varchar(10),分数 int)
    goinsert into tb select 
    1 ,'小丽', 15 union all select
    2 ,'小明', 20 union all select
    3 ,'小强', 20 union all select
    4 ,'小张',10 union all select
    5 ,'小闯', 15select dense_rank() over(order by [分数]) as 排名,名称,分数
    from tb排名                   名称         分数
    -------------------- ---------- -----------
    1                    小张         10
    2                    小闯         15
    2                    小丽         15
    3                    小明         20
    3                    小强         20(5 行受影响)--drop table tbdense_rank 记错了
      

  6.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    create table [tb]([ID] int,[名称] varchar(4),[分数] int)
    insert [tb]
    select 1,'小丽',15 union all
    select 2,'小明',20 union all
    select 3,'小强',20 union all
    select 4,'小张',10 union all
    select 5,'小闯',15--2005
    select id=dense_rank() over(order by[分数] desc ) ,[名称],[分数]from [tb] order by id
    --2000
    select id=(select count(1)+1 from tb where [分数]>a.[分数]),[名称],[分数]from [tb] a order by id
    /*
    id          名称   分数
    ----------- ---- -----------
    1           小明   20
    1           小强   20
    3           小丽   15
    3           小闯   15
    5           小张   10(5 行受影响)*
    /
      

  7.   

    create table tb(ID int , 名称 varchar(10),分数 int)
    goinsert into tb select 
    1 ,'小丽', 15 union all select
    2 ,'小明', 20 union all select
    3 ,'小强', 20 union all select
    4 ,'小张',10 union all select
    5 ,'小闯', 15select dense_rank() over(order by [分数] desc) as 排名,名称,分数
    from tb
    排名                   名称         分数
    -------------------- ---------- -----------
    1                    小明         20
    1                    小强         20
    2                    小丽         15
    2                    小闯         15
    3                    小张         10(5 行受影响)
    --drop table tb
      

  8.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2010-03-31 09:49:50
    -- Verstion:
    --      Microsoft SQL Server 2005 - 9.00.4053.00 (Intel X86) 
    -- May 26 2009 14:24:20 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([ID] int,[名称] varchar(4),[分数] int)
    insert [tb]
    select 1,'小丽',15 union all
    select 2,'小明',20 union all
    select 3,'小强',20 union all
    select 4,'小张',10 union all
    select 5,'小闯',15
    --------------开始查询--------------------------
    select
     排名=(select count(distinct 分数 )+1 from tb where t.分数<分数),
    名称,分数
    from
     tb  t 
    order by
     1----------------结果----------------------------
    /* 排名          名称   分数
    ----------- ---- -----------
    1           小明   20
    1           小强   20
    2           小丽   15
    2           小闯   15
    3           小张   10(5 行受影响)*/
      

  9.   

    修改, 2000的错了
    --2000
    select id=(select count(distinct [分数])+1 from tb where [分数]>a.[分数]),[名称],[分数]from [tb] a order by id
      

  10.   

    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([ID] INT,[名称] NVARCHAR(10),[分数] INT)
    INSERT [tb]
    SELECT 1,N'小丽',15 UNION ALL
    SELECT 2,N'小明',20 UNION ALL
    SELECT 3,N'小强',20 UNION ALL
    SELECT 4,N'小张',10 UNION ALL
    SELECT 5,N'小闯',15
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    --2000
    select id=(select count(distinct [分数])+1 from tb where [分数]>a.[分数]),[名称],[分数]from [tb] a order by id/*
    排名                   名称         分数
    -------------------- ---------- -----------
    1                    小明         20
    1                    小强         20
    2                    小丽         15
    2                    小闯         15
    3                    小张         10(5 行受影响)
    */SQL2000要这样
      

  11.   

    --2000IF NOT OBJECT_ID('[tb]') IS NULL
        DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([ID] INT,[名称] NVARCHAR(10),[分数] INT)
    INSERT [tb]
    SELECT 1,N'小丽',15 UNION ALL
    SELECT 2,N'小明',20 UNION ALL
    SELECT 3,N'小强',20 UNION ALL
    SELECT 4,N'小张',10 UNION ALL
    SELECT 5,N'小闯',15
    GOselect (select count(distinct 分数) from tb  where 分数>=a.分数) as 排名,名称,分数
    from tb a 
      

  12.   


    select 排名=dense_rank() over(order by 分数),名称,分数 from table
      

  13.   

    语法错误 (操作符丢失) 在查询表达式 'dense_rank() over(order by [分数])' 中。 
      

  14.   


    --建立表
    create table tb(ID int,名称 varchar(10),分数 int)
    insert tb
    select 1, '小丽', 15
    union all select 2, '小明', 20
    union all select 3, '小强', 20
    union all select 4, '小张', 10
    union all select 5, '小闯', 15--sql 2005 SQL
    select 排名=dense_rank() over(order by 分数),名称,分数 from tbdrop table tb
    --结果
    /*
    排名                   名称         分数
    -------------------- ---------- -----------
    1                    小张         10
    2                    小闯         15
    2                    小丽         15
    3                    小明         20
    3                    小强         20
    */
      

  15.   

    ----2000的create table tb(ID int , 名称 varchar(10),分数 int)
    goinsert into tb select 
    1 ,'小丽', 15 union all select
    2 ,'小明', 20 union all select
    3 ,'小强', 20 union all select
    4 ,'小张',10 union all select
    5 ,'小闯', 15select (select count(distinct 分数) from tb  where 分数>=a.分数) as 排名,名称,分数
    from tb a order by 排名
    排名          名称         分数
    ----------- ---------- -----------
    1           小明         20
    1           小强         20
    2           小丽         15
    2           小闯         15
    3           小张         10(5 行受影响)
    --drop table tb
      

  16.   

    如果在ACCESS下呢。应该怎么写。我两个数据库都需要,谢谢你们
      

  17.   


    --按分数降序
    --建立表
    create table tb(ID int,名称 varchar(10),分数 int)
    insert tb
    select 1, '小丽', 15
    union all select 2, '小明', 20
    union all select 3, '小强', 20
    union all select 4, '小张', 10
    union all select 5, '小闯', 15--sql 2005 SQL
    select 排名=dense_rank() over(order by 分数 desc),名称,分数 from tbdrop table tb
    --结果
    /*
    排名                   名称         分数
    -------------------- ---------- -----------
    1                    小明         20
    1                    小强         20
    2                    小丽         15
    2                    小闯         15
    3                    小张         10(5 行受影响)
    */
      

  18.   

    Access下一样吗?有错误啊
      

  19.   


    Access用上面2000的语句试试看!
      

  20.   

    不可以。strSQL="select (select count(distinct Fs) from Khpm where Fs>=a.Fs) as 排名,名称,分数 from Khpm a order by 排名"数据库明细ID      DW        FS说明:DW就是单位名称   FS 就是分数
      

  21.   

    SELECT DENSE_RANK() OVER(ORDER BY 分数 DESC) AS 排名,名称 AS 姓名,分数 
    FROM TB