下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、統(tǒng)計“數(shù)據(jù)庫原理”的成績分布情況,即按照各分?jǐn)?shù)段統(tǒng)計人數(shù)1、創(chuàng)建需要的表create table rank(分?jǐn)?shù)段 char(20), 人數(shù) int);2、創(chuàng)建存儲過程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 表中查詢查詢該課程號*/ 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í)行存儲過程exec statistic_mark;4、查詢結(jié)果select * from rank;二、統(tǒng)計任意一門課的平均成績1、創(chuàng)建需
5、要的表CREATE TABLE Avggrade( cname CHAR(50), avgg NUMERIC(10, 6); 2、創(chuàng)建存儲過程CREATE PROCEDURE collect_avggrade AS DECLARE /*聲明變量*/ curname CHAR(50), curcno CHAR(4), curavgg NUMERIC(10, 6); declare mycursor CURSOR FOR /*聲明游標(biāo)mycursor 查詢課程號和名稱*/ 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í)行存儲過程 exec
7、collect_avggrade;4、查詢結(jié)果SELECT * FROM Avggrade;三、將學(xué)生選課成績從百分制改為等級制(即A、B、C、D、E)1、在SC表中加入新列newgradeALTER TABLE SC ADD newgrade CHAR(1); -由于之前的成績值為整數(shù)型,而修改后的結(jié)果為字符型,因此在SC中先增加一列newgrade,存放換算后的成績 2、創(chuàng)建存儲過程法(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)處理每個學(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í)行存儲過程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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保型PHC管樁生產(chǎn)與施工一體化合同2篇
- 二零二五版汽車售后服務(wù)合同協(xié)議2篇
- 二零二五版醫(yī)療器械樣品采購及臨床試驗合同3篇
- 二零二五年度特種玻璃進(jìn)出口貿(mào)易合同樣本2篇
- 基于云計算的醫(yī)療信息平臺建設(shè)合同(2025年度)3篇
- 二零二五版CNG車輛進(jìn)出口貿(mào)易合同2篇
- 二零二五年度豪華郵輪船員聘用及綜合服務(wù)合同3篇
- 二零二五版家庭護(hù)理服務(wù)與保險產(chǎn)品對接合同2篇
- 二零二五年電子商務(wù)產(chǎn)業(yè)園杭州電子商務(wù)法律風(fēng)險防范合同3篇
- 二零二五年防水材料研發(fā)與市場拓展合同3篇
- GB/T 18476-2001流體輸送用聚烯烴管材耐裂紋擴(kuò)展的測定切口管材裂紋慢速增長的試驗方法(切口試驗)
- GA 1551.5-2019石油石化系統(tǒng)治安反恐防范要求第5部分:運(yùn)輸企業(yè)
- 拘留所教育課件02
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 天津市新版就業(yè)、勞動合同登記名冊
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級上冊地理全冊單元測試卷(含期中期末試卷及答案)
評論
0/150
提交評論