首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL分组查询后取每组前N条记录

一、前言 分组查询是常见SQL查询语句。...但是今天我们要探讨不是GROUP BY关键字学习和使用,而是一种有点另类分组查询。 最近,项目上遇到这样一个功能需求。...而业务系统官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3条,换句话:“按照资讯分类分组,取每组前3条资讯信息列表”。...我们想在查询每条资讯记录时要是能查出其所在类型排名就好了,然后根据排名字段进行过滤就好了。这时候我们就想到了子查询,而且MySQL是可以实现这样功能子查询。...查询结果 说明: 分析top字段查询,发现其满足条件有两个:其一是info_type_id和当前记录type_id相等;其二是info表所有记录大于 当前记录浏览量且info_type_id相等记录数量

25.9K32
您找到你想要的搜索结果了吗?
是的
没有找到

SQL命令 DISTINCT

DISTINCT和GROUP BY DISTINCT和GROUP BY这两个记录按指定字段(或多个字段)分组,并为该字段每个唯一值返回一条记录。...查看和编辑GROUP BY和DISTINCT查询必须生成原始值选项。(此优化也适用于GROUP BY子句。)。默认值为“否”。 此默认设置按字母值大写排序规则对字母值进行分组。...您可以设置此系统范围选项,然后使用%exact排序规则函数为特定查询覆盖它以保留字母大小写。...DISTINCT BY(StreamField)将流字段为空记录数减少到一个空记录。 星号语法:DISTINCT*语法是合法,但没有意义,因为根据定义,所有行都包含一些不同唯一标识符。...不同于(*)语法不合法。 子查询:在子查询中使用DISTINCT子句是合法,但没有意义,因为子查询返回单个值。 未选择行数据:DISTINCT子句可以与不访问任何表数据SELECT一起使用。

4.3K10

数据分析系列——SQL数据库

以上属性中,不需要更改选项对应语句不写出来即可。 删除数据库 使用语句DROP DATABASE database_name来进行删除。 3 数据表基本操作 ?...简单查询表中数据 1、SQL运算符 1)、算术运算符,主要包括加、减、乘、除、取余、取商。...(1)、分组查询介绍 ? 上面语句中:GROUPBY是分组查询关键字,在其后面写是按其分组列名,可以按照多列进行分组。 HAVING是在分组查询中使用条件关键字。...(2)、查询出额外数据连接——外连接 在前面的查询语句中,查询结果全部都是需要符合条件才能够被查出,如果执行语句中没有符合条件结果,那么在结果中就不会有任何记录。...4、结果集运算 (1)、使用UNION关键字合并查询结果 所谓合并查询结果是将两个或更多查询结果放到一个结果集中显示,但是合并结果是有条件,那就是必须保证每一个结果集中字段和数据类型一致。

2K80

高级SQL查询-(聚合查询分组查询,联合查询

3.2左连接和右连接区别 left join (左连接):返回包括左表中所有记录和右表中连接字段相等记录。...right join (右连接):返回包括右表中所有记录和左表中连接字段相等记录。...3.3on和where区别 1,on和where on是连接两个表时笛卡尔积形成中间表约束条件 where是在有on条件select语句中过滤中间表约束条件,在没有on单表查询中,是限制物理表或中间表记录约束条件...当使用该操作符时,不会去掉结果集中重复行 查询 id 小于 3,或者名字为“英语”课程 – 可以看到结果集中出现重复数据Java select * from course where id<3...实际大部分应用中是不会产生重复记录,最常见是过程表与历史表union Union All:对两个结果集进行并集操作,包括重复行,不进行排序 如果返回两个结果集中有重复数据,那么返回结果集就会包含重复数据了

3.9K10

SQL知识点总结

where:过滤表中数据条件,主要对应是表中一条条记录 group by:如何将上面过滤出数据按照哪个类分组归类 having:对上面已经分组数据进行过滤条件 select:查看结果集中哪个列也就是哪个字段...(1)group by语句对select后所选择字段有一定限制,即select后没有使用聚合函数字段必须包含在group by 语句后面的结果集中。...二、重点写多表连接查询 若一个查询涉及到两个或两个以上表,则称之为多表连接查询。可从多个表中提取数据并组合成新纪录。 连接查询主要包括内连接、外连接和交叉连接等。...] SELECT  语句n 其中:ALL表示在合并结果集中包含所有查询语句产生全部记录包括重复记录。...如果没有指定ALL,则系统自动删除合并后结果集中重复记录

2.2K10

MySQL-单表操作

去除重复记录 实际应用中,对于数据分析需求,有时需要去除查询记录中重复数据。...SELETE selete 选项 字段列表 FROM 数据表 在上述语法中,“selete选项”默认值为All,表示保存所有查询记录;当设置为DISINCT时,表示去除重复记录,只保留一条。...需要注意是,当查询记录字段有多个时,必须所有字段值完全相同才被认为是重复记录。 排量与限量 排序 单字段排序 单字段排序指的是查询时仅按照一个指定字段进行升序或降序排序。...限量 对于一次性查询大量数据,不仅不便于阅读查看,还会浪费系统效率。LIMIT可以限定记录数量,也可以指定查询从那一条记录开始。...如果UPDATE和DELETE操作没有添加WHERE条件,则可以使用LIMIT来限制更新和删除数量。

2K10

SQL 简介:如何使用 SQL SELECT 和 SELECT DISTINCT

SELECT 语句也可以有许多可选子句来优化查询并返回精确结果。常用条款包括:在哪里。SQL WHERE 命令指定要检索行。通过...分组。...SQL GROUP BY 命令对共享属性行进行分组,以便将聚合函数应用于每个组。拥有。SQL HAVING 命令在 GROUP BY 子句定义组中选择特定特征。作为。...FROM source_table;要在结果集中显示表中所有列,请在 SELECT 之后使用符号“*”。同样,您可以设置其他标志,例如仅返回唯一行选项(使用 ONLY UNIQUE)修饰符。...组合 SQL SELECT 和 INSERT 语句包含嵌套 SELECT 语句 INSERT 语句允许您使用 SELECT 命令结果集中一行或多行快速填充表。...source_tables WHERE 条件;该语句语法包含几个参数:“表”是您应该插入记录结果集表。

1.1K00

Power Query 真经 - 第 7 章 - 常用数据转换

Power Query 实际做是查看数据集中所有列,并确定有(至少)一列没有被选中。...【警告】 【透视列】对话框中【值列】总是默认为数据集中第一列,这很少是用户需要。不要忘了更改它。 【注意】 如果单击【高级选项】左边小三角,会发现也可以更改数值聚合方式。...【-- 自定义 --】分隔符选项并不局限于单个字符。事实上,用户可以使用整个单词,如果这在所使用数据集中是必要。...图 7-31 分组数据集共产生了 7 行 这非常酷,但是关于这个功能需要注意以下几点。 没有包括分组或聚合区域(“State” 列)源数据列会被删除。在进行分组操作之前,不需要删除它们。...虽然在这个示例中【操作】选项只使用了【求和】功能,但用户在【操作】选项中可以使用选项包括【平均值】、【中值】、【最小值】、【最大值】、【对行进行计数】、【非重复行计数】和【所有行】功能。

7.2K31

Oracle 高级查询-【联合语句】【联合查询】【层次查询

,一旦使用分组之后,select 语句真实操作目标为各个分组数据,每次循环处理也是各个分组,而不是单条记录、 SELECT column_name,... | * FROM table_name...这些联合语句包括以下几种:union 查询,union all 查询,intersect 查询 minus 查询 union 查询 union 查询是指两个查询结果集进行并集操作,并将重复记录剔除...union all 查询和union 查询同为并集操作,但union all 查询并不删除最终结果集中重复记录。.... | * FROM table1_name WHERE .... minus 查询 minus 查询用于获得两个结果集合差集,只会显示在第一个结果集中存在但第二个结果集中不存在数据,并且会以第一列结果进行排序...联接查询 联接用于指定多数据源之间如何组合,以形成最终数据源。如果没有未显示指定联接,那么将获得多个数据源笛卡尔积。 什么是多表查询 从多个表中获取数据就是多表查询

2.2K20

SQL数据库查询语句

含义是对结果集中重复行只选择一个,以保证行唯一性(注意:强调是“行”,而不是某一列)。...限制查询结果中返回行数 使用top选项可限制查询结果返回行数,即返回指定个数记录数。...即只能显示分组字段值及统计函数值,且每组只有一行统计数据。 compute:可用于解决既要显示具体记录数据又要显示统计信息问题,并且不分组。即不需分组,既显示字段值又要显示统计函数值。...compute…by:可用于解决既要显示具体记录数据又要分组显示统计信息问题。即分组统计,既要显示除分组字段以外其它字段值又要显示统计函数值。...例25:由xs表创建’计算机专业学生借书证’表,包括借书证号和姓名。

3.9K20

Oracle 数据库拾遗(三)

使用 GROUP BY 子句实现分组 在实际应用中,使用 SELECT 语句查询出来数据量可能会很多,这时就需要将庞大数据记录进行分组,便于用户查看。...0 或 1 CUBE 除了返回由 GROUP BY 子句指定列外,还返回按组统计行 ROLLUP 与 CUBE 不同是,此选项对 GROUP BY 子句中列顺序敏感,其只返回第一个分组条件指定统计行...,在使用 GROUP BY 子句为查询记录分组时,经常需要进行过滤,这就需要用户在 SELECT 语句中增加数据过滤准则。...,集合运算包括以下 4 种: INTERSECT(交集),返回两个查询共有的记录 UNION ALL(并集),返回各个查询所有记录包括重复记录 UNION(并集),返回各个查询所有记录,不包括重复记录...MINUS(补集),返回第一个查询检索出记录减去第二个查询检索出记录之后剩余记录 SELECT SNO FROM student MINUS SELECT SNO FROM grade 注意:

1.4K10

GEO数据库使用教程及在线数据分析工具

假设GDS中每个样本值测量值以等效方式计算,即背景处理和标准化等考虑因素在整个数据集中是一致。通过GDS子集提供反映实验设计信息。...与GEO其他数据集分析工具不同,GEO2R不依赖于精心设计数据集,而是直接查询原始系列矩阵数据文件。这使得及时分析更多地理数据成为可能。...有两种注释类型: NCBI生成注释可用于许多记录。这些注释是通过从平台中提取稳定序列识别信息,定期查询Entrez基因和UniGene数据库,生成一致、最新注释而得到。...NCBI生成注释其他类别包括GO术语和染色体位置信息。 提交者提供注释可用于所有记录。这些表示提交者提供原始平台注释。...请注意,提交者提供注释在样式和内容上有很多多样性,而且自提交时起可能就没有更新过。 (3)Profile graph 通过从平台记录ID列输入相应标识符来查看特定基因表达谱图。

36.9K2227

MySql笔记

又很久没有写博客了 这篇笔记是边学边记 当时比较仓促 所以有的地方可能会比较乱 但是大概方法写还是比较清楚了 等有时间回头再好好整理一下这篇文章。...不同存储引擎(表类型)提供不同性能特性和可用功能。没有一种各方面都又具有最佳性能又具有各种功能存储引擎。...; 如下可见新增了字段address 修改表字段(包括字段名): Alter table 表名 change 旧字段名 新字段名 新字段类型 新字段选项; 修改字段类型和选项: Alter table...truncate table 表名 truncate不能加where条件 直接删除全部记录id索引从1开始 查询数据 前面多次使用过 这里就说说基本查询 以后有时间在扩展呀 要查询数据库表数据,我们使用如下...分组查询 使用group by 对查询结果分组 如果对数据进行分组统计就需要使用group by group by将表按列值进行分组值相同为一组 SELECT class_id, COUNT(

61120
领券