SQL面试题

name kechengfenshu
张三 语文81
张三数学75
李四语文76
李四数学90
王五语文81
王五数学100
王五英语90

1、用一条SQL语句查询出每门课都大于80分的学生姓名

 1 create table chengji1(
 2 name  varchar(50) not null,
 3 kecheng varchar(50) not null,
 4 fenshu int not null
 5 )
 6 insert chengji1(name,kecheng,fenshu)values('张三','语文',81),('张三','数学',75),('李四','语文',76),('李四','数学',90),('王五','语文',81),('王五','数学',100),('王五','英语',90)
 7 
 8 select * from chengji1
 9 --distinct 用于返回唯一不同的值--
10 select distinct name from chengji1 where name not in (select distinct name from chengji1 where fenshu <= 80 )
11 --增加having字句的原因是,where关键字无法与合计函数一起使用--
12 select name from chengji1 group by name having min(fenshu)> 80
13 ----
14 select name from chengji1 group by name having COUNT(kecheng) >= 3 and MIN(fenshu) >= 80 
View Code

 

2、删除除了自动编号不同, 其他都相同的学生冗余信息

 1 create table stutable1(
 2 id int primary key IDENTITY(1,1) not null,
 3 stunumber varchar(20) not null,
 4 name varchar(20) not null,
 5 kcnumber varchar(20) not null,
 6 kecheng varchar(20) not null,
 7 fenshu int not null
 8 )
 9 insert stutable1(stunumber,name,kcnumber,kecheng,fenshu) values('2005001','张三','0001','数学',69),('2005002','李四','0001','数学',89),('2005001','张三','0001','数学',69)
10 select * from stutable1
11 delete stutable1 where id not in (select  MIN(id) from stutable1 group by stunumber,name,kcnumber,kecheng,fenshu)
答案

3、面试题:怎么把这样一个表儿

查成这样一个结果

create table yma(
year int not null,
month int not null,
amount decimal(18,1) not null
)
insert yma values(1991,1,1.1),(1991,2,1.2),(1991,3,1.3),(1991,4,1.4),(1992,1,2.1),(1992,2,2.2),(1992,3,2.3),(1992,4,2.4)
select * from yma
delete from yma

select year,
(select amount from yma m where month =1 and m.year= yma.year) as m1,
(select amount from yma m where month =2 and m.year= yma.year) as m2,
(select amount from yma m where month =3 and m.year= yma.year) as m3,
(select amount from yma m where month =4 and m.year= yma.year) as m4
from yma group by year
答案

4、说明:拷贝表( 拷贝数据, 源表名:a 目标表名:b)

create table yma1(
year int not null,
month int not null,
amount decimal(18,1) not null
)
insert into yma1(year,month,amount)select year,month,amount from yma
select * from yma1
答案

 5、通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

6、通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?

SELECT * FROM Persons WHERE FirstName LIKE 'a%'

 

转载于:https://www.cnblogs.com/zyc19910109/p/8622355.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值