1. 创建学生管理数据库,学生成绩表(字段和数据类型自定),插入十条记录。
2.使用IF语句求出学号为“10000”的学生平均成绩,如果大于或等于80分,输出“优良”。
3. 利用CASE语句输出学生成绩等级。
4.建立一个存储过程,可以根据学号查询出学生的成绩。
CREATE TABLE studentscore (student_id VARCHAR(20),item VARCHAR(20),score NUMERIC(3,2))
INSERT INTO studentscore
( student_id, item, score )
VALUES ( '10000', -- student_id - varchar(20)
'语文', -- item - varchar(20)
90 -- score - numeric
),
( '10000', -- student_id - varchar(20)
'数学', -- item - varchar(20)
80 -- score - numeric
),
( '10000', -- student_id - varchar(20)
'外语', -- item - varchar(20)
75 -- score - numeric
),
( '20000', -- student_id - varchar(20)
'语文', -- item - varchar(20)
90 -- score - numeric
),
( '20000', -- student_id - varchar(20)
'数学', -- item - varchar(20)
80 -- score - numeric
),
( '20000', -- student_id - varchar(20)
'外语', -- item - varchar(20)
75 -- score - numeric
),
( '30000', -- student_id - varchar(20)
'语文', -- item - varchar(20)
90 -- score - numeric
),
( '30000', -- student_id - varchar(20)
'数学', -- item - varchar(20)
80 -- score - numeric
),
( '30000', -- student_id - varchar(20)
'外语', -- item - varchar(20)
75 -- score - numeric
),
( '40000', -- student_id - varchar(20)
'语文', -- item - varchar(20)
90 -- score - numeric
)
IF (SELECT SUM(score)/COUNT(0) FROM studentscore WHERE student_id='10000') >= 80
PRINT '优良'
SELECT CASE WHEN score< 60 THEN '不及格' ELSE CASE WHEN score < 80 THEN '及格' ELSE '优良' END END,student_id,item FROM studentscore
CREATE PROCEDURE [dbo].[queryscore]
@student_id varchar(20)
AS
SELECT * FROM studentscore WHERE student_id=@student_id
https://wenku.baidu.com/view/8164abed87c24028905fc3bc.html
CREATE TABLE T_StudentScore
(
Id INT PRIMARY KEY IDENTITY,
StuNo VARCHAR(10),
Project VARCHAR(10),
Score DECIMAL(18,2)
)
INSERT INTO dbo.T_StudentScore
( StuNo, Project, Score )
VALUES ( '10000','语文',70),
( '10000','语文',73),
( '10000','数学',80),
( '10000','英语',90),
( '10000','化学',95),
( '10000','物理',86),
( '10000','生物',87),( '20000','语文',70),
( '20000','语文',73),
( '20000','数学',60),
( '20000','英语',50),
( '20000','化学',95),
( '20000','物理',66),
( '20000','生物',77)
--过程创建
--exec Pro_GetCjByNo '20000'
CREATE PROC Pro_GetCjByNo
@StuNo varchar(10)
AS
BEGIN
SELECT cj=CASE WHEN AVG(Score)>=80 THEN '优良' ELSE '一般' end FROM T_StudentScore WHERE StuNo=@StuNo
end