版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)基礎(chǔ)與實(shí)踐技術(shù)(SQL Server 2008)第七章第7章 高級(jí)查詢7.1 CASE函數(shù)7.2 子查詢7.3 查詢結(jié)果的并、交、差運(yùn)算7.4 其他一些查詢功能 7.4.1 開(kāi)窗函數(shù) 7.4.2 公用表表達(dá)式 7.4.3 Merge語(yǔ)句2/1317.1 CASE函數(shù)是一種多分支函數(shù),可以根據(jù)條件列表的值返回多個(gè)可能結(jié)果中的一個(gè)??捎迷谌魏卧试S使用表達(dá)式的地方。不是一個(gè)完整的T-SQL語(yǔ)句,不能單獨(dú)執(zhí)行。3/1311. 簡(jiǎn)單CASE函數(shù)CASE input_expression WHEN when_expression THEN result_expression .n ELSE else
2、_result_expression END4/131示例【例1】查詢選了Java課程的學(xué)生的學(xué)號(hào)、姓名、所在系和成績(jī),并對(duì)所在系進(jìn)行如下處理:“計(jì)算機(jī)系”:顯示“CS”;“信息管理系”:顯示“IM”;“通信工程系”:顯示“COM”。 SELECT s.Sno 學(xué)號(hào),Sname 姓名, CASE Dept WHEN 計(jì)算機(jī)系 THEN CS WHEN 信息管理系 THEN IM WHEN 通信工程系 THEN COM END AS 所在系,Grade 成績(jī) FROM Student s join SC ON s.Sno = SC.Sno JOIN Course c ON c.Cno = SC.
3、Cno WHERE Cname = JAVA5/1312搜索CASE函數(shù)CASE WHEN Boolean_expression THEN result_expression .n ELSE else_result_expression END6/131示例【例2】查詢“C001”課程的考試情況,列出學(xué)號(hào)和成績(jī),對(duì)成績(jī)進(jìn)行如下處理如果成績(jī)大于等于90,則在查詢結(jié)果中顯示“優(yōu)”;如果成績(jī)?cè)?0到89分之間,則在查詢結(jié)果中顯示“良”;如果成績(jī)?cè)?0到79分之間,則在查詢結(jié)果中顯示“中”;如果成績(jī)?cè)?0到69分之間,則在查詢結(jié)果中顯示“及格”;如果成績(jī)小于60分,則在查詢結(jié)果中顯示“不及格”。7/1
4、31SELECT Sno, CASE WHEN Grade = 90 THEN 優(yōu) WHEN Grade between 80 and 89 THEN 良 WHEN Grade between 70 and 79 THEN 中 WHEN Grade between 60 and 69 THEN 及格 WHEN Grade 4 THEN 多 WHEN COUNT(SC.Cno) BETWEEN 2 AND 4 THEN 一般 WHEN COUNT(SC.Cno) BETWEEN 1 AND 2 THEN 少 WHEN COUNT(SC.Cno) = 0 THEN 未選END AS 選課情況FRO
5、M Student S LEFT JOIN SC ON S.Sno = SC.SnoWHERE Dept = 計(jì)算機(jī)系 GROUP BY S.SnoORDER BY COUNT(SC.Cno) DESC7.1.2 CASE 函數(shù)應(yīng)用示例【例4】修改全體學(xué)生的JAVA考試成績(jī),修改規(guī)則如下:對(duì)通信工程系學(xué)生,成績(jī)加10分;對(duì)信息管理系學(xué)生,成績(jī)加5分;對(duì)其他系學(xué)生,成績(jī)不變。UPDATE SC SET Grade = Grade + CASE Dept WHEN 通信工程系 THEN 10 WHEN 信息管理系 THEN 5 ELSE 0 END FROM Student S JOIN SC O
6、N S.Sno = SC.Sno JOIN Course C ON C.Cno = SC.Cno WHERE Cname = JAVA12/1317.1.2 CASE 函數(shù)應(yīng)用示例7.2 子查詢7.2.1 嵌套子查詢(不相關(guān)子查詢)7.2.2 相關(guān)子查詢7.2.3 其他形式的子查詢13/131【說(shuō)明】1.如果一個(gè)select語(yǔ)句嵌套在另一個(gè)select、insert、update或delete語(yǔ)句中,則稱為子查詢。2.嵌套子查詢:內(nèi)層查詢中不關(guān)聯(lián)外層查詢的子查詢。3.相關(guān)子查詢:內(nèi)層查詢利用外層查詢提供的信息執(zhí)行。4.子查詢語(yǔ)句可以出現(xiàn)在任何能夠用表達(dá)式的地方。7.2 子查詢(subquery
7、)1.查詢學(xué)生姓名、所在系和該學(xué)生選的課程門(mén)數(shù)。SELECT Sname,Dept, (SELECT COUNT(*) FROM SC WHERE Sno = Student.Sno ) AS CountCno FROM Student15/1317.2 子查詢(subquery)2.查詢課程名、開(kāi)課學(xué)期及選該門(mén)課的學(xué)生人數(shù)、平均成績(jī),不包括沒(méi)人選的課程。SELECT Cname AS 課程名,semester AS 開(kāi)課學(xué)期, ( SELECT COUNT(*) FROM SC WHERE Cno = Course.Cno ) AS 選課人數(shù), ( SELECT AVG(Grade) FRO
8、M SC WHERE Cno = Course.Cno) AS 平均成績(jī) FROM Course WHERE Cno IN (SELECT Cno FROM SC)16/1317.2 子查詢(subquery)【例5】查詢課程號(hào)、課程名、開(kāi)課學(xué)期、學(xué)分以及該學(xué)期開(kāi)設(shè)課程的總學(xué)分、平均學(xué)分、最低學(xué)分和最高學(xué)分。 SELECT Cno, Cname, Semester,Credit, SUM(Credit) OVER(PARTITION BY Semester) AS Total, AVG(Credit) OVER(PARTITION BY Semester) AS Avg, MIN(Credit
9、) OVER(PARTITION BY Semester) AS Min, MAX(Credit) OVER(PARTITION BY Semester) AS Max FROM CourseOVER子句與聚合函數(shù)結(jié)合使用EXISTS形式的子查詢EXISTS代表存在量詞。WHERE NOT EXISTS(子查詢)不返回查詢的數(shù)據(jù),只產(chǎn)生邏輯真值和假值。EXISTS:當(dāng)子查詢中有滿足條件的數(shù)據(jù)時(shí),返回真值,否則返回假值。NOT EXISTS:當(dāng)子查詢中有滿足條件的數(shù)據(jù)時(shí),返回假值;否則返回真值。18/131【例6.1】查詢選了JAVA課程的學(xué)生姓名和所在系。SELECT Sname, Dept
10、FROM Student WHERE EXISTS ( SELECT * FROM SC WHERE Sno=Student.Sno AND EXISTS ( SELECT * FROM Course WHERE Cno = SC.Cno AND Cname = JAVA)【例6.2】查詢沒(méi)有選修JAVA課程的學(xué)生姓名和所在系。19/131EXISTS形式的子查詢not【例7】查詢至少選了全部課程的學(xué)生的學(xué)號(hào)、姓名和所在系。該查詢的關(guān)系代數(shù)表達(dá)式為: Sno,Sname,Sdept(Student)(SNO,CNO(SC) cno(ourse)SQL語(yǔ)言中沒(méi)有提供除運(yùn)算,而且,除運(yùn)算也不能用如
11、ALL、=ALL、=ALL等量化的謂詞形式構(gòu)造。20EXISTS形式的子查詢分析(1)構(gòu)造反例:設(shè)有一門(mén)課程是s.sno沒(méi)有選的(2)將步驟1構(gòu)造的反例表達(dá)為搜索條件;(3)建立表示這類反例不存在的搜索條件;(4)建立完整的SELECT語(yǔ)句。 21最終語(yǔ)句SELECT s.Sno, Sname, Sdept FROM Student s WHERE NOT EXISTS( SELECT * FROM Course c WHERE NOT EXISTS( SELECT * FROM SC x WHERE x. Cno = c.Cno and x.Sno = s.Sno)22【例8】查詢至少選了“
12、0811102”學(xué)生所選的全部課程的學(xué)生的學(xué)號(hào)和所選的課程號(hào)(1)構(gòu)造反例:有一個(gè)“0811102”學(xué)生選的課程是?.sno沒(méi)有選的。 23EXISTS形式的子查詢示例(續(xù))(4)建立完整的SELECT語(yǔ)句SELECT Sno, Cno FROM SC s1 WHERE NOT EXISTS( SELECT * FROM SC x WHERE Sno = 0811102 and NOT EXISTS( select * from SC y where y.Cno = x.Cno and y.Sno = s1.Sno) and Sno != 0811102去掉0811102本人24派生表也稱為內(nèi)
13、聯(lián)視圖,是將子查詢做為一個(gè)表來(lái)處理。由子查詢產(chǎn)生的新表就稱之為“派生表”,這很類似于臨時(shí)表。select * from (select * from table) as temp25/131示例【例9】查詢至少選了C001和C002兩門(mén)課程的學(xué)生學(xué)號(hào)。SELECT T1.Sno FROM (SELECT * FROM SC WHERE Cno = C001) AS T1 JOIN (SELECT * FROM SC WHERE Cno = c002) AS T2 ON T1.Sno=T2.Sno26/1317.3 查詢結(jié)果的并、交、差運(yùn)算SELECT語(yǔ)句的查詢結(jié)果是元組的集合,所以多個(gè)SELE
14、CT語(yǔ)句的結(jié)果可進(jìn)行集合操作。集合操作主要包括:UNION(并)、INSTERSECT(交)EXCEPT(差)27/7627/131一些說(shuō)明所有的SELECT語(yǔ)句列表中列的個(gè)數(shù)必須相同,而且對(duì)應(yīng)列的語(yǔ)義應(yīng)該相同。各SELECT語(yǔ)句中每個(gè)列的數(shù)據(jù)類型必須兼容。合并后的結(jié)果采用第一個(gè)SELECT語(yǔ)句的列標(biāo)題。如果要對(duì)查詢的結(jié)果進(jìn)行排序,則ORDER BY子句寫(xiě)在最后一個(gè)查詢語(yǔ)句之后。28/7628/1317.4 其他一些查詢功能7.4.1 開(kāi)窗函數(shù)7.4.2 公用表表達(dá)式7.4.3 Merge語(yǔ)句29/1317.4.1 開(kāi)窗函數(shù)開(kāi)窗函數(shù)是指可以用于“分區(qū)”或“分組”計(jì)算的函數(shù)。SQL SERVER
15、提供排名開(kāi)窗函數(shù)和聚合開(kāi)窗函數(shù)。結(jié)合over子句使用:OVER (PARTITION BY value_expression , . n )30/131【例1】 查詢課程號(hào)、課程名、開(kāi)課學(xué)期、學(xué)分以及該學(xué)期開(kāi)設(shè)課程的總學(xué)分、平均學(xué)分、最低學(xué)分和最高學(xué)分。 SELECT Cno, Cname, Semester,Credit, SUM(Credit) OVER(PARTITION BY Semester) AS Total, AVG(Credit) OVER(PARTITION BY Semester) AS Avg, MIN(Credit) OVER(PARTITION BY Semester
16、) AS Min, MAX(Credit) OVER(PARTITION BY Semester) AS Max FROM Course31/1311. 將OVER子句與聚合函數(shù)結(jié)合使用【例2】設(shè)有表MyOrderDetail:32/1311. 將OVER子句與聚合函數(shù)結(jié)合使用【例2】查詢訂單號(hào)、產(chǎn)品號(hào)、訂購(gòu)數(shù)量、每個(gè)訂單的總訂購(gòu)數(shù)量以及每個(gè)產(chǎn)品的訂購(gòu)數(shù)量占該訂單總訂購(gòu)數(shù)量的百分比。(MySimpleDB)SELECT OrderID 訂單號(hào), ProductID 產(chǎn)品號(hào), OrderQty 訂購(gòu)數(shù)量, SUM(OrderQty) OVER(PARTITION BY OrderID) 總計(jì),
17、CAST(1.0*OrderQty/SUM(OrderQty) OVER(PARTITION BY OrderID) *100 AS DECIMAL(5,2) AS 所占百分比 FROM MyOrderDetail33/1311. 將OVER子句與聚合函數(shù)結(jié)合使用34/1311. 將OVER子句與聚合函數(shù)結(jié)合使用【練習(xí)】查詢學(xué)號(hào)、姓名、性別、所在系,以及該系的學(xué)生總?cè)藬?shù)、男女生人數(shù)及男女生百分比。1. 將OVER子句與聚合函數(shù)結(jié)合使用2.over子句與排名函數(shù)一起使用排名函數(shù)為分區(qū)中的每一行返回一個(gè)排名值。SQL Server提供了4個(gè)排名函數(shù):RANKDENSE_RANKROW_NUMBER
18、NTILE36/131RANK()函數(shù)RANK()OVER( , n )RANK()函數(shù)返回結(jié)果集的分區(qū)內(nèi)每行的排名。每個(gè)分區(qū)內(nèi)行的排名從1開(kāi)始。排序時(shí)有相同值的行具有相同排名。37/131查詢訂單號(hào)、產(chǎn)品號(hào)、訂購(gòu)數(shù)量以及每個(gè)產(chǎn)品在每個(gè)訂單中的訂購(gòu)數(shù)量排名。38/131RANK()函數(shù)【例3】查詢訂單號(hào)、產(chǎn)品號(hào)、訂購(gòu)數(shù)量以及每個(gè)產(chǎn)品在每個(gè)訂單中的訂購(gòu)數(shù)量排名。(MySimpleDB)SELECT OrderID, ProductID, OrderQty, RANK() OVER (PARTITION BY OrderID ORDER BY OrderQty DESC) AS RANKFROM
19、MyOrderDetailORDER BY OrderID39/131RANK()函數(shù)DENSE_RANK()函數(shù)DENSE_RANK()函數(shù)與RANK()函數(shù)的作用基本一樣,使用方法也一樣。DENSE_RANK()OVER( , n )唯一區(qū)別是DENSE_RANK()函數(shù)的排名中間沒(méi)有任何間斷,即該函數(shù)將返回的是一個(gè)連續(xù)的整數(shù)值。40/13141/131DENSE_RANK()函數(shù)ROW_NUMBER()函數(shù)返回結(jié)果集分區(qū)內(nèi)行的序列號(hào),每個(gè)分區(qū)的第一行從1開(kāi)始。 ROW_NUMBER ( ) OVER ( )與Rank()函數(shù)的區(qū)別是生成的序列號(hào)不重復(fù)。42/131【例4】 查詢“計(jì)算機(jī)文
20、化學(xué)”的考試情況,列出學(xué)號(hào)、姓名、所在系、考試成績(jī)及成績(jī)排名。SELECT S.Sno, Sname, Dept, Grade, ROW_NUMBER() OVER(ORDER BY Grade DESC) AS NumberFROM Student S JOIN SC ON S.Sno = SC.SnoJOIN Course C ON C.Cno = SC.CnoWHERE C.Cname = 計(jì)算機(jī)文化學(xué)43/131ROW_NUMBER()函數(shù)【練習(xí)】查詢學(xué)生學(xué)號(hào)、選的課程的課程號(hào)、考試成績(jī)以及考試成績(jī)?cè)谠撻T(mén)課程中排名。2.over子句與排名函數(shù)一起使用7.4.2 公用表表達(dá)式公用表表達(dá)式
21、(CTE,Common Table Expression)將查詢語(yǔ)句產(chǎn)生的結(jié)果集指定一個(gè)臨時(shí)命名的名字,這些命名的結(jié)果集就稱為公用表表達(dá)式。CTE可以在SELECT、INSERT、UPDATE、DELETE等語(yǔ)句中被多次引用。45/131公用表表達(dá)式的語(yǔ)法格式WITH ,.n AS ( SELECT 語(yǔ)句 )其中,:= expression_name ( column_name ,.n ) 46/131示例【例5】 定義一個(gè)統(tǒng)計(jì)每門(mén)課程的選課人數(shù)的簡(jiǎn)單CTE,并利用該CTE查詢課程號(hào)和選課人數(shù)。 WITH CnoCount(Cno, Counts) AS ( SELECT Cno, COUNT
22、(*) FROM SC GROUP BY Cno ) SELECT Cno, Counts FROM CnoCount 47/131示例【例6】利用CTE查詢選課人數(shù)超過(guò)2人的課程。WITH CnoCount(Cno, Counts) AS ( SELECT Cno, COUNT(*) FROM SC GROUP BY Cno )SELECT Cno, Counts FROM CnoCount WHERE Counts 2 ORDER BY Counts48/1317.4.3 Merge語(yǔ)句MERGE語(yǔ)句是SQL Server 2008新增加的數(shù)據(jù)操作語(yǔ)句。該語(yǔ)句的功能是根據(jù)源表對(duì)目標(biāo)表執(zhí)行插
23、入、更新或刪除操作。最典型的應(yīng)用就是進(jìn)行兩個(gè)表的同步。MERGE語(yǔ)句最后的分號(hào)是不能省略的!49/1311.MERGE語(yǔ)句格式MERGE 目標(biāo)表USING 源表ON 匹配條件WHEN MATCHED THEN 語(yǔ)句WHEN NOT MATCHED by target|by source THEN 語(yǔ)句;50/131示例【例7】設(shè)有Product及ProductNew兩個(gè)表,現(xiàn)希望將Product表中的數(shù)據(jù)同步到ProductNew表中。 CREATE TABLE Product ( ProductID varchar(7) PRIMARY KEY, ProductName varchar(50
24、) NOT NULL, Price decimal(6,1) DEFAULT 0 ) CREATE TABLE ProductNew ( ProductID varchar(7) PRIMARY KEY, ProductName varchar(50) NOT NULL, Price decimal(6,1) DEFAULT 0 )51/131插入操作在Product表中插入如下數(shù)據(jù): INSERT INTO Product Values (4100037,優(yōu)盤(pán),50), (4100038,鼠標(biāo),30), (4100039,鍵盤(pán),100)52/131修改Product表中“4100037”產(chǎn)品
25、的價(jià)格為55。 UPDATE Product SET Price=55 WHERE ProductID = 4100037從Product表中刪除“410037”號(hào)產(chǎn)品。 DELETE FROM Product WHERE ProductID = 4100037修改和刪除操作同步操作對(duì)ProductNew表同步以上操作:MERGE ProductNew AS d USING Product AS s ON s.ProductID = d.ProductID WHEN NOT MATCHED by target THEN INSERT( ProductID,ProductName,Price)
26、VALUES(s.ProductID,s.ProductName,s.Price) -WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN MATCHED THEN UPDATE SET d.ProductName = s.ProductName, d.Price = s.Price;54/131第7章 高級(jí)查詢7.1 CASE函數(shù)7.2 子查詢7.3 查詢結(jié)果的并、交、差運(yùn)算7.4 其他一些查詢功能 7.4.1 開(kāi)窗函數(shù) 7.4.2 公用表表達(dá)式 7.4.3 Merge語(yǔ)句55/1311查詢選了“Java”課程的學(xué)生學(xué)號(hào)、姓名和JAVA成績(jī)。2.統(tǒng)計(jì)選了Ja
27、va課程的這些學(xué)生的選課門(mén)數(shù)和平均成績(jī)。3.查詢選了“C001”號(hào)課程且成績(jī)高于此課程的平均成績(jī)的學(xué)生的學(xué)號(hào)和成績(jī)。4. 查詢沒(méi)選“C001”號(hào)課程的學(xué)生姓名和所在系。5.將學(xué)分最低的課程的學(xué)分加2分。6.查詢每門(mén)課程考試成績(jī)最高的兩個(gè)學(xué)生的學(xué)號(hào)以及相應(yīng)的課程號(hào)和成績(jī)。不包括沒(méi)考試的課程。7.查詢有最高學(xué)分超過(guò)本學(xué)期平均學(xué)分1.5倍的學(xué)期。8.查詢所學(xué)每一門(mén)課程成績(jī)均不低于該課程平均成績(jī)的學(xué)生姓名及相應(yīng)課程號(hào)。 9.查詢學(xué)號(hào)、姓名、性別、所在系,以及該系的學(xué)生總?cè)藬?shù)、男女生人數(shù)及男女生百分比。10刪除JAVA考試成績(jī)最低的學(xué)生的JAVA修課記錄。56/131作 業(yè)2.用MERGE語(yǔ)句實(shí)現(xiàn)匯總數(shù)
28、據(jù)同步假設(shè)為了做月報(bào)表的需要,創(chuàng)建了一個(gè)月銷售匯總表。希望每日將新的銷售記錄添加到每月匯總表中。在每個(gè)月的第1天晚上,只需將銷售記錄插入到銷售匯總表中即可。但從第2天晚上開(kāi)始情況就不一樣了,對(duì)于之前沒(méi)有銷售記錄的數(shù)據(jù),只需將該數(shù)據(jù)插入到銷售匯總表中;對(duì)于之前有銷售記錄的數(shù)據(jù),則需要更新該商品的匯總數(shù)據(jù)57/131示例(續(xù)1)本示例用MySimpleDB數(shù)據(jù)庫(kù)中的Sales.SalesOrderHeader和Sales.SalesOrderDetail表中的數(shù)據(jù)來(lái)同步銷售匯總數(shù)據(jù)。在MySimpleDB數(shù)據(jù)庫(kù)中創(chuàng)建銷售匯總表:CREATE TABLE Sales.MonthlyRollup( Y
29、ear smallint NOT NULL, Month tinyint NOT NULL, ProductID int NOT NULL REFERENCES Production.Product (ProductID), QtySold int NOT NULL, PRIMARY KEY(Year,Month,ProductID)58/131示例(續(xù)2)設(shè)只對(duì)2003年8月的數(shù)據(jù)進(jìn)行匯總,從該月的第1天開(kāi)始。構(gòu)建MERGE語(yǔ)句,產(chǎn)生2003年8月1日的銷售匯總數(shù)據(jù)。MERGE Sales.MonthlyRollup AS smrUSING( SELECT soh.OrderDate, so
30、d.ProductID, SUM(sod.OrderQty) AS QtySold FROM Sales.SalesOrderHeader soh JOIN Sales.SalesOrderDetail sod ON soh.SalesOrderID = sod.SalesOrderIDWHERE soh.OrderDate = 2003-08-01 GROUP BY soh.OrderDate, sod.ProductID) AS sON (s.ProductID = smr.ProductID)WHEN MATCHED THEN UPDATE SET smr.QtySold = smr.Q
31、tySold + s.QtySoldWHEN NOT MATCHED THEN INSERT (Year, Month, ProductID, QtySold) VALUES (DATEPART(yy, s.OrderDate), DATEPART(m, s.OrderDate), s.ProductID, s.QtySold);59/131示例(續(xù)3)繼續(xù)查看該月第2天的總結(jié)果。更新日期,繼續(xù)運(yùn)行下述代碼(仿真在該月第2天運(yùn)行)MERGE Sales.MonthlyRollup AS smrUSING ( SELECT soh.OrderDate, sod.ProductID, SUM(so
32、d.OrderQty) AS QtySold FROM Sales.SalesOrderHeader soh JOIN Sales.SalesOrderDetail sod ON soh.SalesOrderID = sod.SalesOrderIDWHERE soh.OrderDate = 2003-08-02 GROUP BY soh.OrderDate, sod.ProductID) AS sON (s.ProductID = smr.ProductID)WHEN MATCHED THEN UPDATE SET smr.QtySold = smr.QtySold + s.QtySoldW
33、HEN NOT MATCHED THEN INSERT (Year, Month, ProductID, QtySold) VALUES (DATEPART(yy, s.OrderDate), DATEPART(m, s.OrderDate), s.ProductID, s.QtySold);60/1317.4.2 公用表表達(dá)式公用表表達(dá)式(CTE,Common Table Expression)將查詢語(yǔ)句產(chǎn)生的結(jié)果集指定一個(gè)臨時(shí)命名的名字,這些命名的結(jié)果集就稱為公用表表達(dá)式。命名好公用表表達(dá)式后就可以在SELECT、INSERT、UPDATE、DELETE等語(yǔ)句中被多次引用。公用表表達(dá)式還可
34、以包括對(duì)自身的引用,這種表達(dá)式稱為遞歸公用表表達(dá)式。61/131公用表表達(dá)式的語(yǔ)法格式WITH ,.n := expression_name ( column_name ,.n ) AS ( SELECT 語(yǔ)句 )62/131示例例9 定義一個(gè)統(tǒng)計(jì)每門(mén)課程的選課人數(shù)的簡(jiǎn)單CTE,并利用該CTE查詢課程號(hào)和選課人數(shù)。 WITH CnoCount(Cno, Counts) AS ( SELECT Cno, COUNT(*) FROM SC GROUP BY Cno ) SELECT Cno, Counts FROM CnoCount ORDER BY Counts63/131例10 使用公用表表達(dá)
35、式來(lái)限制返回結(jié)果。改進(jìn)例9的查詢,定義一個(gè)統(tǒng)計(jì)每門(mén)課程的選課人數(shù)的CTE,并利用該CTE查詢選課人數(shù)超過(guò)2人的課程。WITH CnoCount(Cno, Counts) AS ( SELECT Cno, COUNT(*) FROM SC GROUP BY Cno )SELECT Cno, Counts FROM CnoCount WHERE Counts 2 ORDER BY Counts64/131Employees表及數(shù)據(jù)示例65/131示例首先建立兩個(gè)包含職工全部信息的CTE,然后利用這兩個(gè)CTE查詢每個(gè)職工信息及上級(jí)領(lǐng)導(dǎo)信息。WITH Emp1 AS (SELECT * FROM Employees ), Emp2 AS (SELECT * FROM Employees )SELECT * FROM Emp1 JOIN Emp2 ON
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州省事業(yè)單位聘用合同制試行辦法
- 合肥 采購(gòu)合同范本
- 大班數(shù)學(xué)課件《門(mén)牌號(hào)碼》
- 2024聘用兼職老師合同書(shū)范文
- 山東省東營(yíng)市利津縣2024-2025學(xué)年八年級(jí)上學(xué)期11月期中化學(xué)試題
- m材料力學(xué)第11章 能量法
- 2024劇本版權(quán)制作及發(fā)行權(quán)購(gòu)買合同參考范本
- 2024合同違約起訴狀范本
- 專題01 標(biāo)題的作用及含義-2022-2023學(xué)年小升初語(yǔ)文記敘文知識(shí)點(diǎn)銜接(部編版)
- 幼兒園防詐安全教育
- 《中藥學(xué)》課件-第9章 消食藥
- 人教版(川教版)五年級(jí)上冊(cè)生命生態(tài)安全教學(xué)設(shè)計(jì)和教學(xué)計(jì)劃及進(jìn)度表(附安全知識(shí))
- 組織效能提升模型的商業(yè)化應(yīng)用
- 《籃球三步上籃》說(shuō)課PPT
- 1500TD菜籽坯預(yù)處理及榨油車間工藝流程設(shè)計(jì)
- 憲法與法律學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 北京科技大學(xué)第二批非教學(xué)科研崗位招考聘用模擬預(yù)測(cè)(共500題)筆試參考題庫(kù)附答案詳解
- 審計(jì)模擬實(shí)訓(xùn)教程第4版馬春靜課后部分參考答案
- 公務(wù)員制度、職業(yè)生涯發(fā)展及工作方法
- 水球(集體球類運(yùn)動(dòng))
- T-JLA 003-2023 高速公路車距抓拍系統(tǒng)技術(shù)要求和檢驗(yàn)方法
評(píng)論
0/150
提交評(píng)論