• 查询每个分组中第N的一条记录


    查询每个分组中第N的一条记录

    -- 天气表,每天每个地区采集了多条记录的天气信息,但是时间只记录到了天,导致同一个地区同一天出现了多条天气记录
    -- 目的:获取所有地区在每天中第N的一条记录
    select * from data_weather where `id` in
    (
        select  t1.`id`
        from 
            data_weather t1 left join 
            data_weather t2 on t1.addtime=t2.addtime and t1.areaId=t2.areaId and t1.`id`<=t2.`id`
        group by t1.`id`,t1.areaId,t1.addtime
        having count(t1.`id`)=5
    )

    思路:将表中每个分组内的记录和自己组内的所有记录进行对比,比较条件为表的id号(或其他唯一约束字段),按照比较条件筛选后每个组内的记录会增多,假设源表某个组内有m条记录,

    则比较后的记录条数为 1+2+...+m条记录,然后再分组统计,如:count(`id`)=1表示分组内最新的一条记录,count(`id`)=2表示分组内倒数第2条记录。

    通过上述方式就可查询分组内第N条记录。

  • 相关阅读:
    24.Azkaban调度脚本的编写
    Docker 安装 Apache
    Docker 安装 MongoDB
    Docker 安装 Redis
    Docker 安装 Python
    Docker 安装 Tomcat
    Docker 安装 MySQL
    Docker 安装 PHP
    Docker 安装 Nginx
    Docker 镜像使用
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/6138113.html
Copyright © 2020-2023  润新知