【问题标题】:How can I get the name of the student who has the max grant?我怎样才能获得获得最高资助的学生的姓名?
【发布时间】:2020-06-14 00:09:03
【问题描述】:

我收到此错误:

消息 147,第 15 级,状态 1,第 3 行
聚合可能不会出现在 WHERE 子句中,除非它位于 HAVING 子句或选择列表中包含的子查询中,并且被聚合的列是外部引用。

【问题讨论】:

    标签: sql sql-server database


    【解决方案1】:

    使用TOP:

    select top (1) name
    from student s
    order by grant desc;
    

    上面总是返回一行,即使最高授权存在平局。如果你想要所有这样的行,你可以添加 with ties 修饰符:

    select top (1) with ties name
    from student s
    order by grant desc;
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      SELECT [name]
      FROM [student]
      WHERE [grant] = (SELECT max([grant]) FROM [student])
      

      【讨论】:

        【解决方案3】:

        如果只有一名学生拥有最大授权,则以下代码可能是正确的:

        select top (1) name
            from student s
            order by grant desc;
        

        如果你有两个或更多的学生获得相同的资助,你应该写如下:

        select * from
        (
        select 
        id,
        name,
        Dens_Rank() over (order by grant desc) student_rank
        )temp where temp.student_rank=1
        

        【讨论】:

          【解决方案4】:

          请在下面找到查询 -

          选择 * 从 学生 在哪里 行号

          【讨论】:

            猜你喜欢
            • 2020-12-23
            • 2017-05-25
            • 1970-01-01
            • 2011-06-04
            • 2017-09-29
            • 1970-01-01
            • 1970-01-01
            • 2018-03-21
            • 1970-01-01
            相关资源
            最近更新 更多