SQL 写查询语句

zhuxianjun1 2009-01-07 12:42:42
表: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 怎么写呢?
...全文
126 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yf520gn 2009-01-07
  • 打赏
  • 举报
回复
问题一:

select * from
(select ID ,name ,k_time,sum(score) score from a)
where rownum<=3
order by score;

问题二:你可以建立一个JOB,每个星期五执行
不过还是给出当前星期几的SQL:

SELECT CASE WHEN to_char(sysdate,'D')='1' THEN 7 ELSE TO_NUMBER(TO_CHAR(SYSDATE,'D'))+1 END DAY FROM DUAL
Divina 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhuxianjun1 的回复:]
如果我想统计这个表里的数据记录最多的前3名呢?
[/Quote]


SELECT * FROM
(SELECT ID , NAME , COUNT(ID) CNT
FROM a
GROUP BY ID
ORDER BY CNT DESC) WHERE ROWNUM <=3;
zhuxianjun1 2009-01-07
  • 打赏
  • 举报
回复
如果我想统计这个表里的数据记录最多的前3名呢?
wangsong145 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhuxianjun1 的帖子:]
表: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,…
[/Quote]
问题1:
SELECT * FROM (SELECT ID,NAME,SUM(SCORE) FROM A GROUP BY SCORE ORDER BY SUM(SCORE) DESC
) WHERE ROWNUM<=3
wangxuhero 2009-01-07
  • 打赏
  • 举报
回复
楼主可以试一下:
问题一:
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
---------
星期三

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧