日期:2014-05-17  浏览次数:20816 次

统计表里记录数前3名,的SQL怎么写?
表: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 怎么写呢?

------解决方案--------------------
表名 :test

1.取前3条记录
select * from test where rownum<=3;

2.获得系统星期数
select to_char(sysdate-1,'d') from dual;

------解决方案--------------------
探讨
引用楼主 zhuxianjun1 的帖子:
问题一:我想根据ID 来统计表里记录数前3名的有哪些人,SQL 怎么写呢?



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

------解决方案--------------------
有什么方法可以根据当前系统时间来判断,当前是星期几呢?我想在每周星期5做一次统计,SQL 怎么写呢?

在oracle中星期五对应的数字是 6

select *
from dual
where to_char(sysdate, 'd') = 6
------解决方案--------------------
SQL code

select * from a where rownum <=3  order by id; 

SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL