t-sql 的一个面试题
时间:2011-04-01 来源:香炮
有学生信息表(包括一些基本信息).课程表(课程名称,课程id等).
有学生的成绩表(学生id,课程id,成绩等)
要查出选修科大于5门的那个学生的基本信息
1: SELECT s.age ,
2: s.name
3: FROM dbo.Student s
4: WHERE s.id IN ( SELECT aa.SID
5: FROM ( SELECT COUNT(sid) AS a ,
6: SID
7: FROM dbo.Result
8: GROUP BY sID
9: ) AS aa
10: WHERE aa.a > 5 )
要是再去查成绩大于多少分的呢? 类同.
还有t-sql中关于case when 的用发.其实这个怎么能够在面试的时候考呢?真是不能够理解到底招人的人是一个什么样的心态在工作.
CASE 表达式有两种格式:
- CASE 简单表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。
- CASE 搜索表达式,它通过计算一组布尔表达式来确定结果。
A. 使用带有 CASE 简单表达式的 SELECT 语句
1: USE AdventureWorks2008R2;
2: GO
3: SELECT ProductNumber, Category =
4: CASE ProductLine
5: WHEN 'R' THEN 'Road'
6: WHEN 'M' THEN 'Mountain'
7: WHEN 'T' THEN 'Touring'
8: WHEN 'S' THEN 'Other sale items'
9: ELSE 'Not for sale'
10: END,
11: Name
12: FROM Production.Product
13: ORDER BY ProductNumber;
14: GO
15:
B. 使用带有 CASE 搜索表达式的 SELECT 语句
1: USE AdventureWorks2008R2;
2: GO
3: SELECT ProductNumber, Name, 'Price Range' =
4: CASE
5: WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
6: WHEN ListPrice < 50 THEN 'Under $50'
7: WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
8: WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
9: ELSE 'Over $1000'
10: END
11: FROM Production.Product
12: ORDER BY ProductNumber ;
13: GO
14:
相关阅读 更多 +