下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、統(tǒng)計(jì)“數(shù)據(jù)庫原理”的成績分布情況,即按照各分?jǐn)?shù)段統(tǒng)計(jì)人數(shù)1、創(chuàng)建需要的表create table rank(分?jǐn)?shù)段 char(20), 人數(shù) int);2、創(chuàng)建存儲(chǔ)過程CREATE PROCEDURE statistic_mark AS DECLARE less60 INT, b60a70 INT , b70a80 INT , b80a90 INT , more90 INT , curcno CHAR(4); /*設(shè)字符型變量curcno 存放輸入的課程名稱參數(shù)*/BEGIN SELECT curcno=cno /*根據(jù)課程名稱在Course 表中查詢查詢?cè)撜n程號(hào)*/ FROM Cours
2、e WHERE cname = '數(shù)據(jù)庫' SELECT less60=count(*) /*查詢分?jǐn)?shù)低于60 分的學(xué)生人數(shù)*/ FROM sc WHERE cno = curcno AND grade < 60; SELECT b60a70=count(*) /*查詢分?jǐn)?shù)在60 到70 之間的學(xué)生人數(shù)*/ FROM sc WHERE cno = curcno AND grade >= 60 AND grade < 70; SELECT b70a80=count(*) /*查詢分?jǐn)?shù)在70 到80 之間的學(xué)生人數(shù)*/ FROM sc WHERE cno = cu
3、rcno AND grade >= 70 AND grade < 80; SELECT b80a90=count(*) /*查詢分?jǐn)?shù)在 80 到90 之間的學(xué)生人數(shù)*/ FROM sc WHERE cno = curcno AND grade >= 80 AND grade < 90; SELECT more90=count(*) /*查詢分?jǐn)?shù)高于90 的學(xué)生人數(shù)*/ FROM sc WHERE cno = curcno AND grade >= 90; /* 向表Rank 中插入五條記錄,顯示成績分布情況*/ INSERT INTO Rank VALUES(
4、39;0,60)',less60); INSERT INTO Rank VALUES('60,70)',b60a70); INSERT INTO Rank VALUES('70,80)',b70a80); INSERT INTO Rank VALUES('80,90)',b80a90); INSERT INTO Rank VALUES('90,100',more90); END; 3、執(zhí)行存儲(chǔ)過程exec statistic_mark;4、查詢結(jié)果select * from rank;二、統(tǒng)計(jì)任意一門課的平均成績1、創(chuàng)建需
5、要的表CREATE TABLE Avggrade( cname CHAR(50), avgg NUMERIC(10, 6); 2、創(chuàng)建存儲(chǔ)過程CREATE PROCEDURE collect_avggrade AS DECLARE /*聲明變量*/ curname CHAR(50), curcno CHAR(4), curavgg NUMERIC(10, 6); declare mycursor CURSOR FOR /*聲明游標(biāo)mycursor 查詢課程號(hào)和名稱*/ SELECT cno, cname FROM course; BEGIN OPEN mycursor; /*打開游標(biāo)*/ FE
6、TCH mycursor INTO curcno, curname; while (fetch_status=0) begin SELECT curavgg=AVG(grade) FROM SC /*求該課程的平均值送變量 */ WHERE cno = curcno; INSERT INTO Avggrade VALUES(curname, curavgg); /* 向Avggrade 表中插入記錄,顯示課程名稱和平均成績*/ FETCH mycursor INTO curcno, curname; end CLOSE mycursor; /*關(guān)閉游標(biāo)*/ END;3、執(zhí)行存儲(chǔ)過程 exec
7、collect_avggrade;4、查詢結(jié)果SELECT * FROM Avggrade;三、將學(xué)生選課成績從百分制改為等級(jí)制(即A、B、C、D、E)1、在SC表中加入新列newgradeALTER TABLE SC ADD newgrade CHAR(1); -由于之前的成績值為整數(shù)型,而修改后的結(jié)果為字符型,因此在SC中先增加一列newgrade,存放換算后的成績 2、創(chuàng)建存儲(chǔ)過程法(1)、用IF.ELSE.語句CREATE PROC change_gradeAS DECLARE -聲明變量 chgrade CHAR(1), curgrade int; declare mycursor
8、cursor for select grade from sc; BEGIN open mycursor; FETCH mycursor INTO curgrade; while fetch_status=0 -循環(huán)處理每個(gè)學(xué)生的成績 begin IF curgrade < 60 -如果成績低于60 分,將成績置為E select chgrade = 'E' ELSe IF curgrade < 70 -如果成績>60&<70,將成績置為D select chgrade = 'D' ELSe IF curgrade < 80
9、 -如果成績>70&<80,將成績置為C select chgrade = 'C' ELSe IF curgrade < 90 -如果成績>80&<90,將成績置為B select chgrade = 'B' ELSE -如果成績高于90 分,將成績置為A select chgrade = 'A' UPDATE SC SET newgrade = chgrade -/修改newgrade 列值,填入換算后的成績 where grade=curgrade; FETCH mycursor INTO cur
10、grade; end; close mycursor; END;法(2)、用when語句CREATE PROCEDURE change_grade AS DECLARE curgrade int; declare mycursor cursor for select grade from sc; BEGIN open mycursor; FETCH mycursor INTO curgrade; while fetch_status=0 begin UPDATE SC SET newgrade = -修改newgrade 列值,填入換算后的成績 case when curgrade <
11、60 -如果成績低于60 分,將成績置為E then 'E' when curgrade < 70 -如果成績>60&<70,將成績置為D then 'D' when curgrade < 80 -如果成績>70&<80,將成績置為C then 'C' when curgrade < 90 -如果成績>80&<90,將成績置為B then 'B' when curgrade >= 90 -如果成績高于90 分,將成績置為A then 'A' end where grade=curgrade FETCH mycursor INTO curgrade; end close mycursor;end3、執(zhí)行存儲(chǔ)過程exec change_grade;4、修改表SCALTER TABLE SC DROP COLUMN grade; -刪除原有的列g(shù)rade EXEC sp_rename 'sc.newgrade', 'Grade', 'COLUMN' -重命名newgrade列為Grade5、查詢結(jié)果selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿(mào)商務(wù)信函合同范例
- 天府新區(qū)航空旅游職業(yè)學(xué)院《數(shù)值分析初步》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)英語下冊(cè) Unit 1 Dream homes Grammar教學(xué)實(shí)錄 (新版)牛津版
- 游艇生產(chǎn)采購合同范例
- 外墻翻修安全合同范例
- 政府賣楊樹合同范例
- 唐山學(xué)院《商務(wù)智能應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 武侯區(qū)保安合同范例
- 商業(yè)大廈租賃合同范例
- 七年級(jí)語文上冊(cè) 第三單元 10 再塑生命的人教學(xué)實(shí)錄1 新人教版
- GB/T 26150-2019免洗紅棗
- GB/T 21933.1-2008鎳鐵鎳含量的測定丁二酮肟重量法
- GB/T 19867.2-2008氣焊焊接工藝規(guī)程
- GB/T 11606-2007分析儀器環(huán)境試驗(yàn)方法
- 三年級(jí)-復(fù)習(xí)查字典
- 拘留所教育課件02
- 消防設(shè)施設(shè)備檢查表
- 膝關(guān)節(jié)核磁共振診斷-嚴(yán)林
- 康復(fù)評(píng)定學(xué)試題和答案
- 大學(xué)生寒假安全教育主題班會(huì)
- 針灸康復(fù)科中醫(yī)優(yōu)勢病種肩周炎診療方案-
評(píng)論
0/150
提交評(píng)論