zoukankan      html  css  js  c++  java
  • 取出表同一类型的指定范围记录

    创建测试表

    create table test_tb
    as
    select user_id,user_name,type_id,user_time
     from (
      select 1 user_id,'aa' user_name,3 type_id,'2009-09-01' user_time from dual
      union
      select 2,'bb',3,'2009-09-02' from dual
      union
      select 3,'cc',3,'2009-09-04' from dual
      union
      select 4,'caec',5,'2009-09-02' from dual
      union
      select 5,'cdeefc',5,'2009-09-20' from dual
      union
      select 6,'acsfc',5,'2009-09-12' from dual
      union
      select 7,'csfc',5,'2009-09-22' from dual
      union
      select 8,'caaac',7,'2009-09-24' from dual
    )a order by type_id,user_time desc


    目的:获取每种type_id最新的两个用户

    方法一,

    select A.user_id,A.user_name,A.type_ID,A.user_time from
    test_tb A
    LEFT JOIN test_tb B
    ON A.TYPE_ID=B.TYPE_ID AND A.user_id <=B.user_id
    GROUP BY A.user_id,A.user_name,A.type_ID,A.user_time
    HAVING COUNT(a.user_id) <=2
    order by a.type_Id,a.user_id

    方法二,
    select A.user_id,A.user_name,A.type_ID,A.user_time from (
      select rank() over (partition by type_Id order by user_id desc)  Rank, a.* from test_tb a
    )a where a.rank<=2 order by type_ID,user_id

  • 相关阅读:
    2016_6_28日报
    2016_6_27日报
    软工总结
    团队项目:第九关攻略
    团队项目:第八关攻略
    团队项目:第七关攻略
    团队项目:第六关攻略
    团队项目:第五关攻略
    团队项目:第三四关攻略
    day5
  • 原文地址:https://www.cnblogs.com/willsun8023/p/1590144.html
Copyright © 2011-2022 走看看