SQL面试题小结
我想面试过软件开发的朋友都会碰到sql方面的面试题,这个可以说是面试必考的。这里拿几个例子开拓一下思路。
1.
有这样一张表
教师号
星期
是否有课
1
1
有
2
3
有
1
2
有
1
2
有
要得出这样的数据:
姓名
星期一
星期二
星期三
星期四
星期五
1
1
2
Null
Null
Null
2
Null
Null
1
Null
Null
不用管具体的表结构,我们看看如何得到这样的结果:
首先我们通过sql创建一张表,然后插入数据:
create table Course
(
TeacherId int,
Week int,
HasCourse varchar(2)
)
insert into Course values('1','1','有')
我们分析发现,在得到的数据中,星期一这样的字段在原表中是不存在的,所以如何产生这些字段是关键所在,估计这个很多初学者也比较少用,但是却很有用.另外一点就是对于没有课的要显示为空,而不是0.
好了,我们看一下如何统计查询:
select distinct TeacherId as 教师号,
星期一=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='1'),
星期二=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='2'),
星期三=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='3'),
星期四=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='4'),
星期五=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='5')
from Course b group by TeacherId
2. 查询表User的地30到40条数据,id主键并且不连续.
可以说这是老古董了,不过看两种方法吧:
select top 10 * from [User]
where id not in
(select top 30 id from [User])
select top 10 * from [User]
where id>(select max(id) from (select top 30 id from [User]) as T)
3.
查询SaleDetail表中GoodsName重复出现三次及以上的记录.
select * from (select goodsName, count(goodsName) as c from SaleDetail group
by goodsName)as t where t.c>=3
4
相关文档:
dim conn,connstr
Set conn = Server.CreateObject("ADODB.Connection")'创建一个数据库链接对象conn,方便后面调用
connstr="Provider=SQLOLEDB;Data Source=(local);Initial Catalog=111;User ID=sa;Password=1234;" '创建一个数据库的recordset对象,方便以后调用
conn.Open connstr'打开数据库 ......
Access 的 SQL 中,计算相应编号的记录之间 加 减 的查询命令
例如 计算ID为 6 的 合计 减去 ID 为 2、3、4 以及加上 ID 为 5 的合计
SELECT SUM(R) AS 结果
from
(
SELECT 合计 AS R from T1 WHERE (ID = 6) UNION
SELECT -合计 AS R from T1 WHERE (ID = 2) UNION
SELECT -合计 AS R f ......
@ECHO OFF
ECHO /////////////////////////////////////////////////
ECHO // Microsoft SQL Server 2005 整合、集成SP3
ECHO // Author : cxygoo
ECHO // Date : 2008-12-22
ECHO /////////////////////////////////////////////////
ECHO 运行此批处理前,得建目录:C:\SQL2005,C:\SQL200 ......
源贴:http://topic.csdn.net/u/20100417/19/ebdc216a-acc9-4e04-80f3-dbada0b4f3fe.html?74846
数据类型:
Code char(6)
CreateTime datetime
Price float
Status bit
数据如下:
Code CreateTime Price Status
031002 2008-10-17 ......