日期:2014-05-18  浏览次数:20486 次

sql面试题 大家看下
if exists (select * from sysobjects where id = OBJECT_ID('[student]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DROP TABLE [student]

CREATE TABLE [student] (
[banji] [varchar] (20) NULL,
[xuehao] [int] NULL,
[kecheng] [varchar] (20) NULL,
[fenshu] [int] NULL)

INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',11,N'语文',80)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',11,N'数学',50)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',11,N'英语',100)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',12,N'数学',20)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',12,N'英语',50)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',21,N'科学',20)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',22,N'英语',80)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',21,N'美术',40)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',13,N'哈哈',98)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',14,N'化学',88)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',15,N'物理',99)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',16,N'生物',77)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',17,N'生物',77)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',18,N'生物',57)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',19,N'生物',77)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',20,N'生物',57)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',21,N'生物',57)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'一班',22,N'生物',77)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',23,N'生物',11)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',24,N'生物',69)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',25,N'生物',35)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',26,N'生物',89)
INSERT [student] ([banji],[xuehao],[kecheng],[fenshu]) VALUES ( N'二班',27,N'生物',78)




1,用sql获取每个班级每门课程的平均分数,
2,用sql获取课程为生物的每个班级的及格人数,并根据结果,再获取课程为生物,班级,及格人数大于等于30的所有记录
3,用sql获取每个班级每门课程的的及格率









------解决方案--------------------
SQL code
--1.
select banji,kecheng,avg(fenshu) from student group by banji,kecheng
--2.
select banji,count(*) 及格人数 from student where kecheng='生物' group by banji having count(*)>=30
--3.
select banji,kecheng,sum(case when fenshu>=60 then 1 else 0 end)/count(*) from student group by banji,kecheng

------解决方案--------------------
SQL code
1.SELECT [banji], [kecheng], AVG([fenshu]) 'afenshu' FROM [student] GROUP BY [banji], [kecheng] ORDER BY [banji],[kecheng]

3.SELECT   [banji], [kecheng],CAST( CAST(SUM(CASE WHEN [fenshu]>=60 THEN 1 ELSE 0 END)*1.0/ COUNT(1)AS NUMERIC(5,2))AS VARCHAR)+'%' '及格率'
 FROM  [student] GROUP BY [banji], [kecheng]

------解决方案--------------------
探讨
select banji,count(*) 及格人数 from student where kecheng='生物' group by banji having count(*)>=30

一班 哈哈 1
一班 化学 1
二班 科学 0
二班 美术 0
二班 生物 0
一班 生物 0
一班 数学 0
一班 物理 1
二班 英语 1
一班 英语 0
一班 语文 1
查询出来……