SQL案例

1、要求查询员工的最低年龄和最高年龄,临时工和正式员工要分别查询 
select  '正式员工最高年龄',max(fage) from t_employee union all
select  '正式员工最小年龄',min(fage) from t_employee union all
select  '临时员工最高年龄',max(fage) from dbo.T_TempEmployee  union all
select  '临时员工最小年龄',min(fage) from dbo.T_TempEmployee 

2、查询每位正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资额合计。 
SELECT FNumber,FSalary FROM T_Employee
UNION ALL
SELECT '工资合计',SUM(FSalary) FROM T_Employee

3、单号   金额
Rk1     10
Rk2     20
Rk3     -30
Rk4     -10
将上面的表输出为如下的格式:
单号   收入   支出
Rk1     10       0
Rk2     20       0
Rk3      0        30
Rk4      0        10

select FNumber,
(
case 
when FAmount>0 then FAmount
else  0
end
) as 收入,
(
case 
when FAmount<0 then ABS(FAmount)
else 0
end
) as 支出
from T_Test1




4、有一张表T_Scores,记录比赛成绩
Date                 Name   Score  
2008-8-8          拜仁       胜
2008-8-9          奇才       胜
2008-8-9          湖人       胜
2008-8-10        拜仁       负
2008-8-8          拜仁       负
2008-8-12        奇才       胜
要求输出下面的格式:
Name   胜     负
拜仁    1 2
湖人   1 0
奇才    2 0
数据和参考答案见备注
注意:在中文字符串前加N,比如N’胜’

select Name,
(
case Score
when N'胜' then 1
else 0
end
) as 胜,
(
case Score
when N'负' then 1
else 0
end
) as 负
from T_Scores
select Name,
Sum(
case Score
when N'胜' then 1
else 0
end
)as 胜,
Sum(
case Score
when N'负' then 1
else 0
end) as 负
from T_Scores
group by Name

5、则根据如下规则对机试成绩进行反复加分,直到平均分超过85分为止。请编写T-SQL语句实现。
90分以上:   不加分
80-89分:   加1分
70-79分:   加2分
60-69分:   加3分
60分以下:   加5分

SELECT * FROM stuMarks  --原始成绩
DECLARE @labAvg INT
WHILE(1=1)
 BEGIN
    UPDATE stuMarks 
      SET labExam=
        CASE
            WHEN labExam<60 THEN labExam+5
            WHEN labExam between 60 AND 69 THEN labExam+3
            WHEN labExam between 70 AND 79 THEN labExam+2 
            WHEN labExam between 80 AND 89 THEN labExam+1
            ELSE labExam
        END
     SELECT @labAvg=AVG(labExam) FROM stuMarks
     IF  @labAvg>=85
           BREAK
 END
SELECT * FROM stuMarks  --加分后的成绩

SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库和表,完成以下查询。 1-4是多表查询和子查询,5-11是数据操作 查询经济性质为“国营”的法人在上海的银行贷款的信息,列出法人代码、银行代码和贷款日期,分别用多表连接和子查询两种方式实现。 查询在“建设银行上海分行”贷过款的法人名称,分别用多表连接和子查询两种方式实现。 查询在“工商银行北京A支行”贷款金额前三名(包括并列的情况)的法人的法人代码、法人名称和经济性质,分别用多表连接和子查询两种方式实现。 查询在“工商银行北京B支行”贷款、且贷款金额高于此银行的平均贷款金额的法人代码、贷款日期和贷款金额。 在银行表中插入如下数据:银行代码号为:B321B,银行名称为:建设银行上海B分行,电话为空值。 在法人表中插入如下数据:法人代码号为:E11,法人名称为:新法人,注册资金为:2350万元,经济性质使用默认值。 删除银行编号为“B321B”的银行信息。 删除2000年之前一次贷款金额最小的贷款记录。 删除从贷款日期到当前日期天数超过10年的贷款记录。 删除法人名称为“爱贝乐玩具有限公司”且贷款金额小于10万元的贷款记录,分别用子查询和多表连接两种方式实现。 将经济性质为“私营”的法人在“工商银行上海支行”贷款的所有贷款金额加5万元,分别用子查询和多表连接两种方式实现。 使用实验一建立的学生数据库和表,完成以下查询 12-15是多表查询和子查询,16-20是数据操作 查询计算机系年龄大于总平均年龄的学生的姓名和年龄。 查询计算机系年龄大于计算机系平均年龄的学生的姓名和年龄。 查询计算机系考试成绩小于总平均分的学生的学号、姓名。 将考试成绩最低的并且不及格学生的最低修课成绩改为60。 将数据库基础考试成绩最低的且成绩为不及格学生的数据库考试成绩改为60。 删除计算机系“计算机网络”课程的全部选课记录。 删除vb考试成绩最低的两个学生的vb考试记录。 对数据库考试成绩进行如下修改:如果成绩低于60分,则提高10%;如果成绩在60到80之间,则增加6%;如果成绩在80到95之间则提高4%,其他情况不提高。 对学分进行如下修改:如果是第1到第3学期开始的课程,则学分增加1分;如果是第4到第6学期开设的课程,学分增加2分,其他学期开始的课程学分增加3分。 以下查询必须用子查询完成: 查询男生年龄最大的学生的姓名和所在系。 查询选修了‘数据库基础’的学生的姓名、所在系。s 选修了第6学期开始的课程的学生的学号、姓名和所在系。 查询男生所修的课程的课程名。 查询年龄最小的学生所选的课程名。 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值