表:a 
字段:ID ,name (姓名) ,k_time (日期时间
数据如下: 
0001,小李,2003-11-05 06:21:19 
0001,小李,2003-10-05 06:21:19 
0002,小二,2003-10-05 06:21:19 
0002,小二,2003-10-05 06:21:19 
0002,小二,2003-10-05 06:21:19 
0003,小三,2003-10-05 06:21:19 
0003,小三,2003-10-05 06:21:19 
0003,小三,2003-10-05 06:21:19 
0004,小四,2003-10-05 06:21:19 
问题一:我想根据ID 来统计表里记录数前3名的有哪些人,SQL 怎么写呢? 
问题二: 有什么方法可以根据当前系统时间来判断,当前是星期几呢?我想在每周星期5做一次统计,SQL 怎么写呢?

解决方案 »

  1.   

    http://topic.csdn.net/u/20090107/00/56de2ef6-b632-47ee-ac6d-05f0d4cb5dbe.html
    楼主怎么发两
      

  2.   

    表名 :test1.取前3条记录
    select * from test where rownum<=3;2.获得系统星期数
    select to_char(sysdate-1,'d') from dual;
      

  3.   

    SELECT * FROM     
    (SELECT ID , NAME , COUNT(ID) CNT
    FROM a
    GROUP BY ID
    ORDER BY CNT DESC) WHERE ROWNUM <=3;
      

  4.   

    第二题select to_char(sysdate,'day') from dual;
      

  5.   


    SQL code
    SELECT * FROM        
     (SELECT ID , NAME , COUNT(ID) CNT
        FROM a
        GROUP BY ID,NAME
        ORDER BY CNT DESC) 
     WHERE ROWNUM <=3;
      

  6.   

    有什么方法可以根据当前系统时间来判断,当前是星期几呢?我想在每周星期5做一次统计,SQL 怎么写呢?在oracle中星期五对应的数字是 6select *
    from dual
    where to_char(sysdate, 'd') = 6
      

  7.   

    获得星期几
    SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL
      

  8.   


    select * from a where rownum <=3  order by id; SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL
      

  9.   

    问题一:我想根据ID 来统计表里记录数前3名的有哪些人,SQL 怎么写呢? select t.id,t.name,t.num
    from (
     select id,name,count(*) num
     from a
     group by id,name
     order by count(*) desc 
    ) t
    where rownum <4问题二: 有什么方法可以根据当前系统时间来判断,当前是星期几呢?我想在每周星期5做一次统计,SQL 怎么写呢?
     
    SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL
      

  10.   

    select * from (select a.*,row_number() over (partition by id order by k_time desc ) rn from a ) where rn>2