今天参加了学校的索迪杯预赛考试,结果看到试卷上的日文就懵了,考这玩意要考日文?就跟美国GRE考试要考《论语》一样,反正很变态!!不过还有两条比较经典的SQL题目值得跟大家分享,适合SQL的初学者学习,好像俺也就是算个初学者吧,好了,看题目。
第一题 用SQL判断今年或者某一年是否是闰年
说明:SQL?闰年?两者好像没多大关系吧,跟考试考日文一样,真佩服考官了,不过详细用过SQL server2000的朋友肯定知道NOW()这个函数,我一开始也是这么想的,可是now()包含太多的无用信息了,而且处理比较麻烦,于是又想到另一个函数GETDATE(),目前在MSSQL2000可用,其他的不太清楚,可以参阅用户手册,GETDATE()的返回信息是今天的日期。
比如 :
结果是:
Dec 18 2008 22:20PM
包括 日期,时间,好,那我们就要这个年份
另外介绍一个日期截取函数DATEPART()
从函数名就可以知道了吧,就是用特定的索引截取响应的数据,我目前知道的
year mouth都是可用,具体的参看用户手册
用法如下:
那如何判断一年是否是闰年呢?如果年份能整除4且不是100的倍数的是闰年,如果
是100的倍数,那么就要除以400了
所以可以这么判断
所以综上所述,SQL语句如下:
第二题 现有学生的课程成绩表(SCG)的包含学生ID(SID, int)、课程ID(CID ,int)、
成绩(grade ,int)这几列,求这些学生成绩中每门学科成绩的前两名,按学号排序,
不考虑成绩并列情况
分析,主要就是求出TOP 2就好了,另外要具体课程具体分析,因为包括不只一门
成绩,因此需要多级嵌套查询,效率可能较低,如果大家有更好的想法的话,欢迎
留言讨论
SQL语句如下:
*注,经过‘汉子’网友的提醒,修改了部分语句
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题: 索迪杯软件大赛预赛试卷SQL语句考试试题
- 独立博客: 李大仁博客
- 永久链接:http://www.lidaren.com/archives/222
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。
第一题 用SQL判断今年或者某一年是否是闰年
说明:SQL?闰年?两者好像没多大关系吧,跟考试考日文一样,真佩服考官了,不过详细用过SQL server2000的朋友肯定知道NOW()这个函数,我一开始也是这么想的,可是now()包含太多的无用信息了,而且处理比较麻烦,于是又想到另一个函数GETDATE(),目前在MSSQL2000可用,其他的不太清楚,可以参阅用户手册,GETDATE()的返回信息是今天的日期。
比如 :
SELECT GETDATE() AS DATE
结果是:
Dec 18 2008 22:20PM
包括 日期,时间,好,那我们就要这个年份
另外介绍一个日期截取函数DATEPART()
从函数名就可以知道了吧,就是用特定的索引截取响应的数据,我目前知道的
year mouth都是可用,具体的参看用户手册
用法如下:
DATEPART(month, GETDATE())
那如何判断一年是否是闰年呢?如果年份能整除4且不是100的倍数的是闰年,如果
是100的倍数,那么就要除以400了
所以可以这么判断
DECLARE @year INT
IF (@YEAR % 4 =0 AND @YEAR %100 <> 0) OR (@YEAR % 400 = 0)
SELECT 'YES'
ELSE
SELECT 'NO'
所以综上所述,SQL语句如下:
DECLARE @year INT
SET @year = DATEPART(month, GETDATE())
IF (@YEAR % 4 =0 AND @YEAR %100 <> 0) OR (@YEAR % 400 = 0)
SELECT 'YES'
ELSE
SELECT 'NO'
第二题 现有学生的课程成绩表(SCG)的包含学生ID(SID, int)、课程ID(CID ,int)、
成绩(grade ,int)这几列,求这些学生成绩中每门学科成绩的前两名,按学号排序,
不考虑成绩并列情况
分析,主要就是求出TOP 2就好了,另外要具体课程具体分析,因为包括不只一门
成绩,因此需要多级嵌套查询,效率可能较低,如果大家有更好的想法的话,欢迎
留言讨论
SQL语句如下:
SELECT t.SID AS 学生ID , t.CID AS 课程ID , t.grade as 分数
FROM SCG AS t
WHERE grade IN
(
SELECT TOP 2 grade
FROM SCG
WHERE
t.CID = SCG.CID
ORDER BY grade DESC
)
ORDER BY SID
*注,经过‘汉子’网友的提醒,修改了部分语句
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题: 索迪杯软件大赛预赛试卷SQL语句考试试题
- 独立博客: 李大仁博客
- 永久链接:http://www.lidaren.com/archives/222
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。