这个sql语句该怎么写呀

ownway 2004-08-31 02:36:01
表如下:
分数 班级 姓名
60 1班 张三
40 1班 李四
60 1班 王五
50 2班 刘一
20 2班 吴涛
43 2班 将二
30 3班 李力
79 3班 小煤
80 3班 刘涛

想写一个sql语句查询结果如下:
分数 班级 姓名 所在班级总分
60 1班 张三 160
40 1班 李四 160
60 1班 王五 160
50 2班 刘一 113
20 2班 吴涛 113
43 2班 将二 113
30 3班 李力 189
79 3班 小煤 189
80 3班 刘涛 189

也就是说想在查询后多一列“所在班级总分”,该怎么写呀?
...全文
221 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
biliky 2004-09-02
  • 打赏
  • 举报
回复
顶 andson2002() 的方法。
over 是一个解析函数,它的返回值是基于分组后的同类多行纪录的一个总值,与聚集函数sum不同的是,前者返回每个组各行一个总值,且同组的值是相同的。
LovenDreams 2004-09-01
  • 打赏
  • 举报
回复
其中s 分数,c 班别, n姓名,zf总分

SQL> create table t1(s number,c varchar(5),n varchar(5));

SQL> insert into t1 values(60,'1','zhang');

SQL> insert into t1 values(40,'1','li');

SQL> insert into t1 values( 60,'1','wang');

SQL> insert into t1 values(50,'2','liu');

SQL> insert into t1 values(20,'2','wu');

SQL> select a.s,a.c,a.n,(select sum(s) from t1 b where b.c=a.c) zf from t1 a;

S C N ZF
---------- ----- ----- ----------
60 1 zhang 160
40 1 li 160
60 1 wang 160
50 2 liu 70
20 2 wu 70
bzszp 2004-09-01
  • 打赏
  • 举报
回复
自己查一下分析函数的文档就很清楚了。
ghtghtmalone 2004-09-01
  • 打赏
  • 举报
回复
mark
Mark_zheng 2004-08-31
  • 打赏
  • 举报
回复
能把OVER 以及 PARTITION BY 的作用解释一下吗??

谢谢。
liuyi8903 2004-08-31
  • 打赏
  • 举报
回复
select c.*,tp.总分
from c,(select c.班级,
sum(c.分数) over(partition by 班级 order by 班级) fs from c ) tp
where c.班级=tp.班级 order by c.班级 desc
andson2002 2004-08-31
  • 打赏
  • 举报
回复
select 分数,班级,姓名,sum(分数) over( partition by 班级) 所在班级总分 from test;
shbjwq430105 2004-08-31
  • 打赏
  • 举报
回复
bzszp(www.bzszp.533.net) 的可以
superlcj(幽灵) 中“order by 班级”中的班级必须指定要,要不然提示无法指定列
该为t.班级。就可以了

superlcj 2004-08-31
  • 打赏
  • 举报
回复
select t.*,tt.fs
from t,(select 班级,sum(分数) fs from t group by 班级) tt
where t.班级=tt.班级 order by 班级 asc;
bzszp 2004-08-31
  • 打赏
  • 举报
回复
select t.*,tt.fs from t,(select 班级,sum(分数) fs from t group by 班级)
tt
where t.班级=tt.班级;

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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