`
penggle
  • 浏览: 58390 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于用sql求出符合条件的前几条记录(Top X)的两种方法

 
阅读更多
如题:现有学生成绩表:
    create table t_score(
         id                number primary key,
         student_name      varchar2(50),
         student_gender    char(2),
         score             number
    );

求出男生女生中成绩前五名的记录。

方法一(常规sql):
     select *
       from t_score a
      where 5 > (select count(1)
                   FROM t_score
                  where student_gender = a.student_gender
                    AND score > a.score)
 order by a.student_gender asc, a.score desc;

方法二(使用oracle分析函数):
     select *
      from (select rank() over(partition by a.student_gender order by a.score desc) rk, a.* from t_score a) t
     where t.rk <= 5;

分享到:
评论

相关推荐

    SQL 取n到m条记录

    **方法三:** 使用`SELECT TOP n * FROM (SELECT TOP m * FROM table_name ORDER BY column_name) a ORDER BY column_name DESC`这种方式通过嵌套查询来实现,先获取前m条记录,再从中筛选出前n条记录。 **应用场景...

    SQL Server查询前N条记录的常用方法小结

    这种方法是通过先查询出前10条记录,然后排除这些记录,再获取接下来的20条记录。具体的SQL语句如下: ```sql SELECT TOP 20 * FROM tbl WHERE id NOT IN (SELECT TOP 10 id FROM tbl) ``` 这种方法的缺点在于,...

    关于SQL Server SQL语句查询分页数据的解决方案

    这种方法首先选择表中前29条记录(倒序排列),然后再从这29条记录中选择前20条正序排列的记录。 ### Oracle数据库中的分页查询 在Oracle数据库中,实现分页查询的方法略有不同,主要是利用`ROWNUM`函数。例如,从...

    sql分页的几种方法

    ### SQL分页的几种方法 #### 背景介绍 在数据库操作中,分页是一项非常常见的需求。尤其是在处理大量数据时,为了提高查询效率、减少服务器负担,并为用户提供更好的体验,分页变得尤为重要。SQL提供了多种实现分页...

    用标准的SQL语句实现查询记录分页

    这里,内层查询负责获取前`m`条记录,外层查询则从中进一步筛选出前`n`条,从而实现分页效果。 ### 方法三:利用IDENTITY列 如果表中包含一个`IDENTITY`类型的自增列,可以利用该特性来实现高效分页。具体操作包括...

    sql随机查出数据作调考用

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与“SQL随机查询数据”相关的知识点,主要包括以下几个方面: ### SQL 随机查询基础知识 在数据库管理中,有时我们需要从大量数据中随机抽取一部分数据用于...

    关于SQL 数据分页

    在这个例子中,作者针对一个包含20万条记录和69个字段的`TORDER`表,设计了一种分页方法,主要基于`prodorderno`作为主索引字段,并且可以使用任意字段进行分页。 首先,我们需要理解基本的分页概念。分页通常涉及...

    sql语句查询指定的条数

    - `TOP`通常与`ORDER BY`子句一起使用,以确保返回的结果是按照某个字段排序后的前几条记录。 #### MySQL MySQL通过`LIMIT`子句来限制查询结果的行数。 **示例代码:** ```sql SELECT * FROM tab LIMIT 10; ``` ...

    Oracle,mysql,sqlserver等各种数据库的分页方法

    这种方法利用了`TOP`关键字来限制结果集的数量,并通过子查询来排除前几条记录,从而实现分页效果。 - **获取前10条记录**: ```sql SELECT TOP 10 * FROM TestTable WHERE ID NOT IN ( SELECT TOP 20 ID ...

    简单sql语句的使用

    - `&gt;`符号表示比较运算符,用于筛选出符合条件的记录。 ##### 3. 限制查询结果数量:使用`TOP`关键字 - **语法**: ```sql SELECT TOP n * FROM 表名; ``` - **示例**:查询`tablename`表中的前10条记录。 ``...

    SQL实现两张无关联表的数据列合并在一张结果集中

    这段SQL语句的作用是创建一个名为`tab1`的临时表,并从中选择`tb_user`表中的前四条记录(根据`Id`字段排序)。这里使用了`TOP 4`来限制返回的结果数量,而`ROW_NUMBER()`函数则为每一行分配了一个唯一的行号,作为...

    常见的几种分页语句和方法

    下面将介绍两种常用的SQL分页技术:基于`LIMIT`的分页和基于`TOP`的分页。 ##### 1. 使用LIMIT进行分页 在MySQL、PostgreSQL等数据库中,`LIMIT`关键字是实现分页的主要方式。其语法结构如下: ```sql SELECT * ...

    T-SQL经典分页语句

    `not in`子句用于排除前几条记录,同时限制`ExamResult.TypeID`为1,确保了基于特定类型的结果集进行分页查询。 综上所述,T-SQL提供了多种方式来实现分页查询,包括单表分页、单表有条件分页以及多表分页,每种...

    T-SQL 高级语句

    例如,在一个大型表中,如果我们只需要查看前几条记录,可以使用TOP关键字指定返回的记录数。在SQL Server中,语法是`SELECT TOP number|percent column_name(s) FROM table_name`。如果`number`是一个数字,它将...

    SQL Server 2005分页显示存储过程

    1. **查询指定数量的记录 ID**:首先使用 `SELECT TOP` 查询出前 `pageIndex * pageSize` 条记录的 ID。 2. **排除已获取的记录**:使用 `WHERE ID NOT IN (SELECT TOP ...)` 排除已经查询出来的 ID,这样剩下的就是...

    在SQL Server中通过SQL语句实现分页查询

    该方法的基本思想是先找到要跳过的记录ID集合,然后从表中选取不在此集合中的前几条记录。实现方式如下: ```sql SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY ...

    经典SQL语句大全

    两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...

    SQL Server T-SQL高级查询

    - **TOP关键字**:`TOP n`表示返回前n条记录,其中n是需要的记录数。 - **列重命名**:`SELECT column_name AS alias_name`可以给列起别名,便于阅读和理解。 - **表重命名**:使用`FROM table_name AS alias_table_...

    实用的SQL语言

    这条语句表示从表`a`开始,依次与表`b`、`c`、`d`进行联接,最后过滤出符合条件的行。 #### 十二、时间差过滤 **知识点11:时间差过滤** 使用`DATEDIFF`函数可以计算两个日期之间的差值。例如: ``` SELECT * FROM ...

Global site tag (gtag.js) - Google Analytics