zoukankan      html  css  js  c++  java
  • 查询每个分组中第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条记录。

  • 相关阅读:
    Programming Contest Ranking(题解)
    Alphabet Cookies
    hpu 1267 Cafeteria (01背包)
    Triangles 正多边形分割锐角三角形
    ACdream 1067:Triangles
    hdu 1253 胜利大逃亡 (代码详解)解题报告
    最短路
    POJ- 1511 Invitation Cards
    E
    HDU
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/6138113.html
Copyright © 2011-2022 走看看