題目1:假設顧客購物表 customer_shopping 結構如下:
customer commodity amount
A 甲 2
B 乙 4
C 丙 1
A 丁 2
B 丙 5
......
請寫出Sql查詢所有購入商品為兩種或兩種以上的購物人記錄;
create table customer_shopping(
customer varchar2(10), commodity varchar2(10), amount number(20) ) insert into customer_shopping(customer ,commodity ,amount ) values ('A','甲',2); insert into customer_shopping(customer ,commodity ,amount ) values ('B','乙',4); insert into customer_shopping(customer ,commodity ,amount ) values ('C','丙',1); insert into customer_shopping(customer ,commodity ,amount ) values ('A','丁',2); insert into customer_shopping(customer ,commodity ,amount ) values ('B','丙',5); select count(commodity),customer from customer_shopping group by customer having count(commodity)>=2; --having后不能跟select后的別名,因為先加載having

題目2:假設學生成績表student_score結構如下:
name course score
張青 語文 72
王華 數學 72
張華 英語 81
張燕 物理 70
張青 化學 76
......
請寫出SQL查詢出所有“張”姓學生中成績大於75分的學生信息;
create table student_score( name varchar2(10), course varchar2(10), score number(20) ) insert into student_score(name,course,score) values ('張青','語文',72); insert into student_score(name,course,score) values ('王華','數學',72); insert into student_score(name,course,score) values ('張華','英語',81); insert into student_score(name,course,score) values ('張青','物理',62); insert into student_score(name,course,score) values ('張燕','物理',70); insert into student_score(name,course,score) values ('張青','化學',76); --select * from student_score where name like '張%' select avg(score),s.name from ( select * from student_score where name like '張%') s group by s.name having avg(score)>=75 --以什么條件group by 就只能查出什么,多寫就不是group by語句

題目3:假設表team結構如下:
ID(number) Name(varchar2)
1 a
2 b
3 b
4 a
5 c
6 c
請寫出sql語句執行一個刪除操作,當Name列上有相同時,只保留ID這列上值小的記錄;
例如:刪除后的結果如下:
ID(number) Name(varchar2)
1 a
2 b
3 c
create table team( ID number(10), Name varchar2(10) ) insert into team(ID ,Name ) values (1,'a'); insert into team(ID ,Name ) values (2,'b'); insert into team(ID ,Name ) values (3,'b'); insert into team(ID ,Name ) values (4,'a'); insert into team(ID ,Name ) values (5,'c'); insert into team(ID ,Name ) values (6,'c'); delete from team where ID not in (select minID from (select min(ID) minID from team group by name)); --分組之后的id就是你要的ID,所以刪除其他ID即可 select * from team;
刪除前:

刪除后:

