SQL題1——查詢所有購入商品為兩種或兩種以上的購物人記錄


題目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;

刪除前:

刪除后:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM