表info  
id  用户 内容  时间
1   张三  232  2007-1-1
2   李四  323  2007-1-2
3   张三  232  2007-1-3
4   李四  123  2007-1-4用Sql 得出 用户出现的次数 以及最近一次的数据 结果如下id  用户 内容    时间          出现次数
3   张三  232   2007-1-3      2
4   李四  123   2007-1-4      2不知道该如果写。。

解决方案 »

  1.   

    create table mtest (a number ,b varchar2(30),c varchar2(30),d varchar2(30));
    insert into mtest values (1, '张三', '232', '2007-1-1');
    insert into mtest values (2, '李四', '323', '2007-1-2');
    insert into mtest values (3, '张三', '232', '2007-1-3');
    insert into mtest values (4, '李四', '123', '2007-1-4');
    commit;
    select * from mtest;
    select b 姓名, count(b) 次数 from mtest group by b;drop table mtest;
      

  2.   

    select a.id,a.用户,a.内容,a.时间,b.次数 
    from info a
    inner join
    (select 用户,max(时间) 时间,count(b) 次数
    from info
    group by 用户) b on a.用户=b.用户 and a.时间=b.时间
      

  3.   

    试试:
    设定用户为A1  内容为A2  时间为A3  
    select A.id,A.A1 用户,C.A2 内容,C.A3 时间,B.num 次数
    (select max(id) id,A1 from info group by A1) A,
    (select A1,sum(1) num from info group by A1) B,
    info C where A.ID=c.ID and A.A1=B.A1
      

  4.   

    SQL> WITH A AS (SELECT 1 ID,'張三' NAME,233 TEXT,'2007-1-1' TIME FROM DUAL
      2             UNION ALL
      3             SELECT 2 ID,'李四' NAME,323 TEXT,'2007-1-2' TIME FROM DUAL
      4             UNION ALL
      5             SELECT 3 ID,'張三' NAME,232 TEXT,'2007-1-3' TIME FROM DUAL
      6             UNION ALL
      7             SELECT 4 ID,'李四' NAME,123 TEXT,'2007-1-4' TIME FROM DUAL
      8             )
      9  SELECT * FROM (select A.*,ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY TIME DESC)  RN from A)
     10  WHERE RN=1
     11  ORDER BY ID
     12  /
     
            ID NAME       TEXT TIME             RN
    ---------- ---- ---------- -------- ----------
             3 張三        232 2007-1-3          1
             4 李四        123 2007-1-4          1
      

  5.   

    不好意思看錯了
    應該是這樣的
    SQL> WITH A AS (SELECT 1 ID,'張三' NAME,233 TEXT,'2007-1-1' TIME FROM DUAL
      2             UNION ALL
      3             SELECT 2 ID,'李四' NAME,323 TEXT,'2007-1-2' TIME FROM DUAL
      4             UNION ALL
      5             SELECT 3 ID,'張三' NAME,232 TEXT,'2007-1-3' TIME FROM DUAL
      6             UNION ALL
      7             SELECT 4 ID,'李四' NAME,123 TEXT,'2007-1-4' TIME FROM DUAL
      8             )
      9  SELECT ID,NAME,TEXT,TIME,RM FROM (select A.*,ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY TIME DESC)  RN,COUNT(NAME)OVER(PARTITION BY NAME ORDER BY ID) RM from A)
     10  WHERE RN=1
     11  ORDER BY ID
     12  /
     
            ID NAME       TEXT TIME             RM
    ---------- ---- ---------- -------- ----------
             3 張三        232 2007-1-3          2
             4 李四        123 2007-1-4          2
     
      

  6.   

    select distinct max(id) over(partition by 用户) id,
                    用户,
                    max(内容) over(partition by 用户) content,
                    max(时间) over(partition by 用户) time,
                    count(*) over(partition by 用户) counts
      from a02
      

  7.   

    select distinct max(id) over(partition by 用户) id,
                    用户,
                    max(内容) over(partition by 用户) content,
                    max(时间) over(partition by 用户) time,
                    count(*) over(partition by 用户) counts
      from info
    这样分组对你的这几行数据可以,但是对整个数据表可能有点问题。仅供参考。
    里面中文用你自己的实际字段即可。
      

  8.   

    try it ..
    SQL> select zz.sid,
      2         zz.cust,
      3         zz.content,
      4         zz.custdate,
      5         zz.count_cust
      6    from (
      7          select tt.*,
      8                 count(1) over(partition by cust) count_cust,
      9                 rank() over(partition by cust order by custdate desc) as rn
     10            from tt
     11         )zz
     12   where rn = 1;       SID CUST    CONTENT CUSTDATE    COUNT_CUST
    ---------- ---- ---------- ----------- ----------
             4 李四        123 1/4/2007             2
             3 张三        232 1/3/2007             2
      

  9.   

    try it again ..
    SQL> select * from test;       SID CUST    CONTENT CUSTDATE
    ---------- ---- ---------- -----------
             1 张三        232 1/1/2007
             2 李四        323 1/2/2007
             3 张三        232 1/3/2007
             4 李四        123 1/4/2007
             5 李四        453 1/1/2007
             6 李四        451 1/4/20076 rows selectedSQL> 
    SQL> select zz.sid,
      2         zz.cust,
      3         zz.content,
      4         zz.custdate,
      5         zz.count_cust
      6    from (
      7          select tt.*,
      8                 count(1) over(partition by cust) count_cust,
      9                 rank() over(partition by cust order by custdate desc) as rn
     10            from test tt
     11         )zz
     12   where rn = 1;       SID CUST    CONTENT CUSTDATE    COUNT_CUST
    ---------- ---- ---------- ----------- ----------
             4 李四        123 1/4/2007             4
             6 李四        451 1/4/2007             4
             3 张三        232 1/3/2007             2