当前位置: 代码迷 >> Oracle开发 >> 统计表里记录数前3名,的SQL如何写
  详细解决方案

统计表里记录数前3名,的SQL如何写

热度:74   发布时间:2016-04-24 07:36:23.0
统计表里记录数前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
  相关解决方案