如图一个数据表: num:每月每个人购买的次数  customeroid:用户Id  购买月份我想查询2011-03月到2011-05月之间的每月二次购买人数。(二次购买就是购买次数大于1的交易)
如果一个人在3月买了1次,4月买了1次,5月买了两次。
3月份的二次购买人数不统计此人。而4月的统计由于他在3-4月买了两次所以4月统计此人(统计数加1),5月已经远超两次了所以也统计。希望大虾们帮帮忙!

解决方案 »

  1.   

    图没显示出来,就三个字段 
    num:每月每个人购买的次数 
    customeroid:用户Id 
    TradeTime:购买月份
      

  2.   

    SQL> desc t;
    Name     Type         Nullable Default Comments 
    -------- ------------ -------- ------- -------- 
    CUSTID   VARCHAR2(10) Y                         
    BUYMONTH VARCHAR2(6)  Y                         
    NUM      NUMBER       Y                         
     
    SQL> select * from t;
     
    CUSTID     BUYMONTH        NUM
    ---------- -------- ----------
    001        201103            1
    001        201104            1
    001        201105            3
    002        201104            1
    002        201105            1
    003        201105            1
     
    6 rows selected
     
    SQL> 
    SQL> SELECT *
      2    FROM (SELECT t.*,
      3                 SUM(t.num) over(PARTITION BY t.custid ORDER BY t.buymonth) uptotal
      4            FROM t)
      5   WHERE uptotal > 1;
     
    CUSTID     BUYMONTH        NUM    UPTOTAL
    ---------- -------- ---------- ----------
    001        201104            1          2
    001        201105            3          5
    002        201105            1          2
     
    SQL> 
      

  3.   

    小弟刚刚接触oracle,多谢帮助了呵呵