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

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

一、前言 分组查询是常见SQL查询语句。...首先,我们知道MySQL数据库分组功能主要是通过GROUP BY关键字来实现,而且GROUP BY通常得配合聚合函数来使用用,比如说分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)...但是今天我们要探讨不是GROUP BY关键字学习和使用,而是一种有点另类分组查询。 最近,项目上遇到这样一个功能需求。...系统中存在资讯信息这样一个功能模块,用于发布一些和业务相关活动动态,其中每条资讯信息都有一个所属类型(如科技类资讯、娱乐类、军事类···)和浏览量字段。...而业务系统官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3条,换句话:“按照资讯分类分组,取每组前3条资讯信息列表”。

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

    查询“01“课程比“02“课程成绩高学生信息及课程分数 sql语句详解

    -- 1、查询"01"课程比"02"课程成绩高学生信息及课程分数 select a.* ,b.s_score as 01_score,c.s_score as 02_score from student...join score c on a.s_id=c.s_id and c.c_id='02' or c.c_id = NULL where b.s_score>c.s_score 首先是查出所有的01课程成绩...,已经是全部01课程学生成绩信息了。...score b on a.s_id=b.s_id and b.c_id='01' 以上是虚拟表,下面是和成绩表合并,查出02课程全部信息 left join score c on a.s_id...=c.s_id and c.c_id='02' 以上就是一个大虚拟表,里面有01 课程成绩,有02课程成绩 现在就进行比较 where b.s_score>c.s_score 成绩进行比较,在一个虚拟表里面进行比较

    5.7K30

    sql where 、group by 和 having 用法解析

    这就是我们需要注意一点,如果在返回集字段中,这些字段 要么就要包含在Group By语句后面,作为分组依据; 要么就要被包含在聚合函数中,作为分组依据; --出现错误详解:咱们看看...1、显示90分以上学生课程名和成绩 //这是一个简单查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade...1、显示90分以上学生课程名和成绩 //这是一个简单查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade>=90;...1、显示90分以上学生课程名和成绩 //这是一个简单查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade...1、显示90分以上学生课程名和成绩 //这是一个简单查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade>=90;

    12.8K30

    从pandas中这几个函数,我看懂了道家“一生二、二生三、三生万物”

    01 nunique number of unique,用于统计各列数据唯一值个数,相当于SQL语句中count(distinct **)用法。...04 groupby groupby,顾名思义,是用于实现分组聚合统计函数,与SQLgroup by逻辑类似。例如想统计前面成绩表中各门课平均分,语句如下: ?...当然,groupby强大之处在于,分组依据字段可以不只一列。例如想统计各班每门课程平均分,语句如下: ? 不只是分组依据可以用多列,聚合函数也可以是多个。...另外,groupby分组字段和聚合函数都还存在很多其他用法:分组依据可以是一个传入序列(例如某个字段一种变形),聚合函数agg内部写法还有列表和元组等多种不同实现。...例如,这里想以学生姓氏进行分组统计课程平均分,语句如下: ? 05 pivot_table pivot_table是pandas中用于实现数据透视表功能函数,与Excel中相关用法如出一辙。

    2.5K10

    5分钟学会SQL SERVER窗口函数

    窗口函数是在 ISO SQL 标准中定义。窗口是用户指定一组行。窗口函数计算从窗口派生结果集中各行值。 可以在单个查询中将多个排名或聚合窗口函数与单个 FROM 子句一起使用。...窗口函数是整个SQL语句最后被执行部分,这意味着窗口函数是在SQL查询结果集上进行, 因此不会受到Group By, Having,Where子句影响。...开窗函数分别应用于每个分区,并为每个分区重新启动计算。 value_expression 指定对相应 FROM 子句生成行集进行分区所依据列。...value_expression 可以是列表达式、标量子查询、标量函数或用户定义变量。 指定按其执行窗口函数计算逻辑顺序。 order_by_expression 指定用于进行排序列或表达式。...如果是之前版本,就只支持-- 聚合函数 over(partition by 分组字段) as 别名 优点 SQL更加简洁 执行效率更高 实例 实例数据使用是和 SQL笔试50题同样数据, 使用平台是

    2.6K10

    数据库系统:第三章 关系数据库标准语言SQL

    模式与表 每个基本表都属于某个模式,一个模式包含多个基本表,定义基本表有三种方式定义其所属模式: 在表名中明显给出模式名 创建模式时同时创建表 设置所属模式,在创建表时不必给出模式名,类似缺省。...创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属模式,搜索路径包含一组模式列表,关系数据库管理系统会使用模式列表中第一个存在模式作为数据库对象模式名,若搜索路径中模式名都不存在...选择表中若干元组 消除取值重复行 在SELECT子句中使用DISTINCT短语,DISTINCT短语作用范围是所有目标列 //DISTINCT同时作用于Grande和Cno,查询选修课程各种成绩...对查询结果分组 使用GROUP BY子句分组,细化聚集函数作用对象(范围)。对查询结果分组后,聚集函数将分别作用于每个组。...– GROUP BY子句作用对象是查询中间结果表; – 分组方法:按指定一列或多列值分组,值相等为一组; – 使用GROUP BY子句后,SELECT子句列名列表中只能出现分组属性和聚集函数

    2.7K10

    flask+vue:创建一个数据列表并实现简单查询功能(三)

    在编写数据列表功能时,查询接口我定义为get方法,在实际发送请求时候,观察一下接口中请求参数,尤其是create_date 可以发现payload中出现了2个create_date参数,形如上图...payload, url: url1+"api/select_data2" 后端代码调整,主要是提取参数时需要作下修改 def post(self): """列表查询接口...这样看来当参数中包含数组、对象等数据格式时,最好用post请求,并且请求头设置为json格式 ---- 后端在获取前端json格式参数时, 除了上述使用 request.json.get(key)获取参数外..., 也可以使用 request.get_json()一次性获取前端所有json参数 其实request.json就是调用get_json() 代码如下 def post(self):..."""列表查询接口""" payload = request.get_json() # 使用get_json()获取前端传来所有参数 print("打印payload

    62530

    flask+vue:创建一个数据列表并实现简单查询功能(二)

    上篇列表功能中还存在着几个缺陷: 1、进入这个菜单后,没有自动触发请求获取数据,导致页面为空; 2、切换页码或者重新选择每页条数后,没有自动重新加载数据,需要点一下查询按钮才行; 3、切换页码或者点击查询获取数据时...,视觉上没有动态加载效果 在methods下新增一个方法query_data() 它里面的代码其实和submitForm()方法中代码一样,都是获取前端参数发送请求,然后获取后端返回数据(只是这个方法中不传任何参数...message({ message: '接口调用失败,请检查系统是否正常', type: 'warning' }); }) } 1、打开列表菜单...handleCurrentChange()下调用query_data()即可,这样的话,当页码切换或者每页条数变更后会自动触发这2个事件,也会调用里面的query_data()方法,自动触发请求并传入当前页码和每页条数...3、给列表添加loading加载提示 使用Loading 加载组件给列表添加动态加载效果 在标签下添加v-loading 指令 在data()下新增一个参数loading,默认为

    82730

    flask+vue:创建一个数据列表并实现简单查询功能(一)

    1、添加查询功能 在页面添加列表查询功能,我需要构造2个查询条件: 【数据类型】,把它做成下拉框形式,筛选对应类型数据 【创建日期】,通过日期筛选创建日期在所选时间范围内数据 点【查询】会把对应参数传到请求中..., '23:59:59']" 3、定义请求参数,查看一下前端传参数具体值是什么样 submitForm()方法中先定义了查询接口触发时所需参数:一个是数据类型,一个是创建日期 class_type...、创建日期默认为空时,传参数如下 create_date值为'' (2)数据类型、创建日期先填写值再重置,传参数如下 create_date值为[''] 可以看到创建日期默认为空时,传值为...: 当某个查询条件为空时,sql语句中则不加这个条件; 当处理日期时,需要考虑前端日期组件传来空值情况(在上面提了一下,前端创建日期如果默认为空时,传值为'';如果先选择日期再重置,传值为为[''...是用来查询数据,查出来后,返回给前端,渲染到列表中;sql2是用来查询数据总量,显示当前查询条件下共有多少条数据; (2)这里定义该接口为get请求,所以用request.args.get来获取前端传来参数

    2.2K20

    SQL简介

    作用,对数据进行持久化操作 2,数据库存储结构 表格:用于存储数据结构 3,数据库分类 SQL:适用于所有数据库增删改查,权限分配结构化查询(查得多)语言 标准sql oracle:pl-sql...sql执行顺序. sql执行顺序 select... from 表名 where 行数据筛选条件 group by 分组依据 having by 分组数据筛选条件 order by 排序依据 执行顺序...交叉连接 cross join 表一每条,与表二所有连接,无条件连接,数量相乘 自连接 特殊链接 join 例:查找课程表中前驱课程 select from emp1 join emp2 on...用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值true或false。...用Where子句替换having子句 创建索引,但无法命中索引。

    2.7K20

    SQL知识点总结

    我觉得对于SQL语句,清楚知道它执行顺序,对于写sql语句非常重要                                   sql查询中用到关键词主要包含六个,并且他们书定顺序依次为...HAVING 子句可以引用选择列表中显示任意项。  { 附说明其实聚合函数只能在以下位置作为表达式使用: SELECT 语句选择列表(子查询或外部查询)。...Microsoft® SQL Server™ 2000 查询优化器可处理这些条件中大多数。如果查询优化器确定 HAVING 搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。...格式为: SELECT  查询列表序列  INTO  新表名 FROM  数据源 …..其他行过滤、分组等语句 用INTO子句创建新表可以是永久表,也可以是临时表。...(如果有DITINCT的话,则TOP是写在DITINCT后边),查询列表前边。

    2.3K10

    sql语句面试经典50题_sql基础知识面试题

    目录 SQL基础知识整理: 常见SQL面试题:经典50题 三、50道面试题 2.汇总统计分组分析 3.复杂查询 sql面试题:topN问题 4.多表查询 【面试题类型总结】这类题目属于行列如何互换,解题思路如下...where 查询条件 如:[b.课程号=’0003′ and b.成绩>80] group by 分组 如:[每个学生平均:按学号分组](oracle,SQL server中出现在select...序列:用于生成一组有规律数值。...如果上面题目不会做,可以复习这部分涉及到sql知识: 3.复杂查询 查询所有课程成绩小于60分学生学号、姓名 【知识点】子查询 1.翻译成大白话 1)查询结果:学生学号,姓名 2)查询条件:所有课程成绩...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录。

    2.9K20

    想学数据分析但不会Python,过来看看SQL吧(下)~

    编辑:王老湿 知识清单 数据分组 创建分组(GROUP BY) 之前学到筛选操作都是基于整个表去进行,那如果想要依据某列中不同类别(比如说不同品牌/不同性别等等)进行分类统计时,就要用到数据分组...,在SQL中数据分组是使用GROUP BY子句建立。...过滤分组(HAVING) 在SQL入门中我们学过WHERE,它是对行数据进行筛选过滤,那么,如果我想对创建分组数据进行筛选过滤呢?...子查询与临时表格所完成任务是一致,只不过子查询是通过嵌套查询完成,而另一种是通过WITH创建临时表格进行查询。...好啦,至此课程所有SQL知识点已经总结完了,希望大家能够用得上,除了看这些枯燥文字和代码之外,希望大家一定一定要多加练习(SQL zoo),未来数据分析师之路,还要继续加油呀!

    3.1K30

    面试 SQL整理 常见SQL面试题:经典50题

    目录 ​ SQL基础知识整理: 常见SQL面试题:经典50题 三、50道面试题 2.汇总统计分组分析 3.复杂查询 sql面试题:topN问题 4.多表查询 【面试题类型总结】这类题目属于行列如何互换...:成绩表score] where 查询条件 如:[b.课程号=’0003′ and b.成绩>80] group by 分组 如:[每个学生平均:按学号分组](oracle,SQL server...序列:用于生成一组有规律数值。...如果上面题目不会做,可以复习这部分涉及到sql知识: 3.复杂查询 查询所有课程成绩小于60分学生学号、姓名 【知识点】子查询 1.翻译成大白话 1)查询结果:学生学号,姓名 2)查询条件:所有课程成绩...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录。

    2.3K10

    常见SQL面试题:经典50例

    ] where 查询条件,如:[b.课程号='0003' and b.成绩>80] group by 分组,如:[每个学生平均:按学号分组](oracle,SQL server中出现在select 子句后分组函数...序列:用于生成一组有规律数值。...推荐:250期面试题汇总 学生表“学号”列设置为主键约束,下图是每一列设置数据类型和约束 创建完表,点击“保存” 2)创建成绩表(score) 同样步骤,创建"成绩表“。...=2; 如果上面题目不会做,可以复习这部分涉及到sql知识: 3.复杂查询 查询所有课程成绩小于60分学生学号、姓名 【知识点】子查询 1.翻译成大白话 1)查询结果:学生学号,姓名 2)查询条件...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录。

    6.9K42

    常见SQL面试题:经典50例

    ] group by 分组,如:[每个学生平均:按学号分组](oracle,SQL server中出现在select 子句后分组函数,必须出现在group by子句后出现),MySQL中可以不用...序列:用于生成一组有规律数值。...学生表“学号”列设置为主键约束,下图是每一列设置数据类型和约束 创建完表,点击“保存” 2)创建成绩表(score) 同样步骤,创建"成绩表“。...=2; 如果上面题目不会做,可以复习这部分涉及到sql知识: 3.复杂查询 查询所有课程成绩小于60分学生学号、姓名 【知识点】子查询 1.翻译成大白话 1)查询结果:学生学号,姓名 2)查询条件:...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录。

    2K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券