SQL面试题

原创 2007年09月24日 11:31:00
SQL数据库 面试题
很久以前的一个sql面试题及答案.
一个sql面试题 题目具体数据记不清了,但是大概意思一样,要求在查询分析器中完成,题目如下:
表className中有如下分类:

classID   className
1              衣服
2              裤子
5              帽子
10            鞋子

表productInfo有如下记录:

productID             productName            parentID            clickNum

1                            男士衣服                      1                         90            --衣服类别中这条记录的点击率最高
2                            女士衣服                      1                         80
3                            男士裤子                      2                         70
4                            女士裤子                      2                         90            --裤子类别中这条记录点击率最高
5                            男士帽子                      5                         15
6                            女士帽子                      5                         30            --帽子类别中这条点击率最高
7                            男士鞋子                      10                       65            --鞋子类别中这条点击率最高
8                            女士鞋子                      10                       52
9                            女士鞋子1                    10                       54

现在要求分别把衣服,裤子,帽子,鞋子这些类别中点击率最高的一条记录找出来,然后再降序排列,结果应如下:

productID             productName            clickNum
1                            男士衣服                      90
4                            女士裤子                      90
7                            男士鞋子                      65
6                            女士帽子                      30


以下为实现过程:

/**//* 
功能: 搜索类别表[className]中的每个类别下点击率最高的那条记录,然后将这些记录降序排列
作者: vivianhu
整理: kgdiwss(我只是添加了注释以及重命名了一些变量)
日期: 2006-4-17
*/


/**//* 如果存在临时表tTable,则先将它删除 */
if exists (
select * from dbo.sysobjects 
where id = object_id(N'[dbo].[tTable]'and OBJECTPROPERTY(id, N'IsUserTable'= 1
)
drop table [dbo].[tTable]

GO

/**//* 创建临时表 */
create table tTable
(
productid 
int,
productname 
varchar(10),
clicknum 
int
)

/**//*  变量申明 */
declare @classID int 

/**//*  定义游标 */
declare cursor_classID   
CURSOR FOR 
Select classID FROM className

/**//*
打开游标
@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
0 表示 FETCH 语句成功。 
*/

OPEN cursor_classID
FETCH NEXT FROM cursor_classID INTO @classID 
WHILE @@FETCH_STATUS = 0

/**//* 搜索某一类别中点击率最高的一条记录 */
BEGIN

insert into tTable
select  top 1 productID,productName,clickNum from productInfo 
  
where parentID = @classID 
   
order by clickNum desc

   
FETCH NEXT FROM cursor_classID 
   
INTO @classID

END

/**//* 关闭游标 */
CLOSE cursor_classID

/**//* 删除游标引用 */
DEALLOCATE cursor_classID

/**//* 对临时表中的记录根据点击率进行降序排列 */
select * from tTable order by clickNum desc 

/**//* 删除临时表 */
drop table tTable
 

经典sql面试题

有3个表S,C,SC S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SCGRADE)代表(学号...
  • zsw12013
  • zsw12013
  • 2016年04月10日 00:37
  • 825

【笔试/面试】SQL 经典面试题

基本概念 (1)any/all,构成 where 子句的条件判断,any:表示或(or)的概念,all:则表示与(and)的概念,这两个关键字的出现是为了语句的简化; (2)先分组再做聚合,逻辑上也应...
  • lanchunhui
  • lanchunhui
  • 2016年04月05日 23:17
  • 8554

sql常见面试题 (我觉得太好了)

Sql常见面试题 受用了 1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu 张三     语文       81 张三    ...
  • u012467492
  • u012467492
  • 2015年07月07日 15:29
  • 91242

SQL常见的一些面试题(太有用啦)

SQL常见面试题 1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu 张三    语文       81 张三     数学   ...
  • a379850992
  • a379850992
  • 2017年02月18日 09:54
  • 5940

java sql常见面试题

为管理学员培训信息,建立3个表:   S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄   C (C#,CN ) C#,CN 分别代表...
  • timliang18601860
  • timliang18601860
  • 2011年08月27日 16:09
  • 2246

SQL常见面试题

1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu 张三    语文       81 张三     数学       75 李四     语...
  • kaaosidao
  • kaaosidao
  • 2017年10月09日 22:24
  • 371

Oracle SQL语句面试题一

以下是Oracle 数据库中hr 用户下面的表。下面的sql语句是以hr身份进入的。若是以system 身份进入需要在表名前面加hr. (如hr.employees)。 以下是表的基本结构 emp...
  • chenfengbao
  • chenfengbao
  • 2017年06月13日 16:21
  • 343

数据库优化面试题

优化1——数据库优化面试题 1.实践中如何优化MySQL 1) SQL语句及索引的优化 2) 数据库表结构的优化...
  • a724888
  • a724888
  • 2017年03月08日 19:32
  • 9585

SQL常见面试题<一>

sql常见面试题 sql理论题 1.触发器的作用?     答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从...
  • QQQQQQ654
  • QQQQQQ654
  • 2016年09月04日 03:07
  • 502

SQL经典面试题集锦

1、问题背景     (1)学生表(学号,姓名,年龄,性别)             student(S#,Sname,Sage,Ssex)     (2)课程表(课程编号,课程名称,教师编号)   ...
  • you23hai45
  • you23hai45
  • 2016年02月02日 18:48
  • 1870
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL面试题
举报原因:
原因补充:

(最多只允许输入30个字)