oracle:平均分大于78的女同学的学号、姓名、平均分
生活随笔
收集整理的這篇文章主要介紹了
oracle:平均分大于78的女同学的学号、姓名、平均分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
create table student(sno varchar(10) primary key,sname varchar(10),ssex varchar(4)
);
insert into student values('001','趙','f');
insert into student values('002','錢','m');
insert into student values('003','孫','f');
insert into student values('004','李','m');
insert into student values('005','周','f');insert into student values('006','趙','f');create table course(cno varchar(10) primary key,cname varchar(30),ccredit int
);
insert into course values('c01','sqlserver',1);
insert into course values('c02','oracle',2);
insert into course values('c03','java',3);
insert into course values('c04','c語言',4);
insert into course values('c05','軟件工程',5);
create table sc(sno varchar(10),cno varchar(10),grade int,primary key (sno,cno),foreign key (sno) references student(sno),foreign key (cno) references course(cno)
);
insert into sc values('001','c01',80);
insert into sc values('001','c02',85);
insert into sc values('001','c02',60);
insert into sc values('001','c03',70);
insert into sc values('001','c04',81);
insert into sc values('001','c05',82);
insert into sc values('002','c01',83);
insert into sc values('002','c02',84);
insert into sc values('003','c03',85);
insert into sc values('003','c05',86);
insert into sc values('004','c04',87);
insert into sc values('004','c05',88);
insert into sc values('005','c02',89);
insert into sc values('005','c04',100);
insert into sc values('005','c05',40);
insert into sc values('006','c05',80);
commit;--平均分大于78的女同學的學號、姓名、平均分
--方法1:
select sc.sno,(select sname from student a where a.sno = sc.sno) sname,avg(grade) from sc,student
where sc.sno = student.sno and ssex='f'
group by sc.sno
having avg(grade)>78
order by sc.sno;
--方法2:
select sc.sno,sname,avg(grade) from sc,student
where sc.sno = student.sno and ssex = 'f'
group by sc.sno,sname
having avg(grade)>78
結果:
描述:
1)數據庫:oracle
2)方法一的坑:ssex='f'必須放在最外層的條件中,如果放再內層的條件中,選出的sname為列,如果沒有符合條件的,則會出現sname為null的情況。
3)方法二的坑:通常計算平均成績,就會想到group by sc.sno,但是查詢的時候,又要展示sname,該列不在分組中,所以很容易報錯,最簡單的辦法就是把sname加入到分組。那有的人就會問,如果有姓名相同的人,會不會分到一個組,答案肯定不會,因為先按照sc.sno分組了,所以,即使有名字相同的,又同時滿足條件,由于學號不同,還是會被查詢出來(如結果所示)。
?
總結
以上是生活随笔為你收集整理的oracle:平均分大于78的女同学的学号、姓名、平均分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle游标遍历的三种方式
- 下一篇: oracle:sql查询