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

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

------解决方案--------------------
楼主可以试一下:
问题一:
select * from 
(select id,max(name),max(k_time),sum(score) total from score
group by id order by total desc) 
where rownum<=3;
问题二:
建立job,星期几用下面语句判断
select to_char(sysdate,'day') from dual;

###########################################
SQL> select * from score;

ID NAME K_TIME SCORE
---------- -------------------- -------------- ----------
1 小李 05-11月-03 67
1 小李 05-10月-03 80
2 小二 05-10月-03 80
2 小二 05-10月-03 80
2 小二 05-10月-03 50
3 小三 05-10月-03 50
3 小三 05-10月-03 90
3 小三 05-10月-03 80
4 小四 05-10月-03 66

已选择9行。

SQL> select * from 
2 (select id,max(name),max(k_time),sum(score) total from score
3 group by id order by total desc) 
4 where rownum<=3;

ID MAX(NAME) MAX(K_TIME) TOTAL
---------- -------------------- -------------- ----------
3 小三 05-10月-03 220
2 小二 05-10月-03 210
1 小李 05-11月-03 147

SQL> select to_char(sysdate,'day') from dual;

TO_CHAR(S
---------
星期三