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

SQL分组查询后取每组的N记录

而业务系统的官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3,换句话:“按照资讯分类分组,取每组的3资讯信息列表”。...资讯分类 资讯信息记录表示例数据如下: ? 资讯信息记录表 需求 :取热门的资讯信息列表且每个类别只取3。...二、核心思想 一般意义上我们在取N记录时候,都是根据某个业务字段进行降序排序,然后取N就能实现。...但是当你仔细阅读我们的题目要求,你会发现:“它是让你每个类型下都要取浏览量的3记录”。 一种比较简单但是粗暴的方式就是在Java代码中循环所有的资讯类型,取出每个类型的3记录,最后进行汇总。...要计算出某资讯信息的在同资讯分类下所有记录中排第几名,换成算出 有多少浏览量比当前记录的浏览量高,然后根据具体的多少(N+1就是N+1就是当前记录所在其分类下的的排名。

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

    MySQL 分组排序后 → 如何取N或倒数N

    N或倒数N   我们回到标题,分组排序后,如何取N记录或倒数N记录   循环查数据库   1、先批量查询 task_id   2、再根据 task_id 逐个去查 t_task_exec_log...,排序获取N记录   3、最后进行一个数据汇合,封装成页面需要的数据格式   但这种方式会循环查数据库,一般是被禁止的   GROUP BY 结合 MySQL 函数   1、先批量查询 task_id...  2、再根据这些 task_id 从 t_task_exec_log 批量查询每个任务的N记录的 log_id 集字符串 SELECT task_id, SUBSTRING_INDEX(GROUP_CONCAT...MySQL8 新增的特性   关于窗口函数可查阅官方文档:Window Functions,不做过多介绍   我们用 ROW_NUMBER 来实现 取N或倒数N   1、批量查询 task_id...  2、使用 ROW_NUMBER ,取N或倒数N   取第一   结果如下   取 5 SELECT * from ( SELECT *, ROW_NUMBER() OVER

    1.2K10

    不同的SQL平台,如何取百分之N记录

    最近帮业务部门梳理业务报表,其中有个需求是就算某指标等待时间最长的百分之十,其实就是对等待时长进行倒序排序后,取结果集的百分之十。...SQL Server实现方法 SQL Server上有个TOP Percent的方法可以直接取结果的(或后)百分之N 例如有如下一张City表 我们取10%的数据记录可以这样写: SELECT TOP...10 PERCENT * FROM City ORDER BY ID DESC 结果如下: Oracle实现方法 Oracle有个ROWNUM伪列可以用来帮助我们计算百分之N。...ROWNUM伪列的特点: ROWNUM是按照记录插入时的顺序排序的 ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM ROWNUM不能用基表名作为前缀 在使用...N的方法了,代码可以验证一下收藏起来留着下次直接套用。

    16010

    买内存的攻略

    看到这张图,你应该知道我是多少需要一根内存啊 内存价格在18年,到19年会大降价,因为中国要做半导体了,三星的闪存涨价,导致半导体相关的好多东西都涨价了,作为要靠电脑吃饭的人,真是无语。。。。...,期待三星无良商家早点倒闭 内存小常识 准备买内存,一定要弄清楚内存相关的参数,比如型号是DDR3,还是ddr4,笔记本内存的电压是低压1.35v,还是标压1.5v,以及内存的主频是1600mhz...要确定自己笔记本时候有多余的内存接口,以及获取主频,在任务管理器,内存中 要知道自己cpu参数,看是否支持ddr4,一般intel6代以后都支持ddr4内存。...查看电脑各个部件的温度 系统稳定性测试 这是自己狗东上内存的信息 虽然我cpu支持ddr4,但是主板不支持,所以只能买ddr3了,而且最好是1600mhz 主频,笔记本二根内存取决最低的主频...** 参考文章 内存怎么正确选择 怎样选购笔记本内存 DDR4内存用什么主板 怎么看主板是否支持DDR4内存 aida64基础教程

    4K80

    关于Java代码优化的N建议!

    然而为了解决这个错误,我们需要先自验证、再打包出待替换的class文件、暂停业务并重启,对于一个成熟的项目而言,最后一其实影响是非常大的,这意味着这段时间用户无法访问应用。...初始大小建议设置为2的N次幂,如果能估计到有2000个元素,设置成new HashMap(128)、new HashMap(256)都可以。...36、对于ThreadLocal使用或者使用后一定要先remove 当前基本所有的项目都使用了线程池技术,这非常好,可以动态配置线程数、可以重用线程。...然而,如果你在项目中使用到了ThreadLocal,一定要记得使用或者使用后remove一下。...这是因为上面提到了线程池技术做的是一个线程重用,这意味着代码运行过程中,一线程使用完毕,并不会被销毁而是等待下一次的使用。

    62520
    领券