官术网_书友最值得收藏!

9.6 自測題答案

(1) 答案為C。DUAL表有一行和一列。COUNT(*)函數返回表或者組中的行數。

A、B和D不正確。A不正確是因為表可以有0行或多行數據,但不可能有NULL行。B不正確是因為DUAL表有一行。D不正確是因為C正確。

(2) 答案為B。按照定義,分組函數每次作用于多行,這一點不同于單行函數。

A、C和D不正確。A不正確是因為在沒有GROUP BY子句的情況下可以使用分組函數。這種情況下,將整個數據集作為一個組操作。C不正確是因為COUNT函數通常對整個表執行,這個表相當于一個組。D不正確是因為,將數據集劃分到不同組之后,對每個組都要執行一次分組函數。

(3) 答案為A。SUM聚合函數忽略空值,將非空值相加。因為有9行包含的SALARY值是100,所以返回900。

B、C和D不正確。如果執行SUM(NVL(SALARY,100)),就會返回B中的結果。C是具有迷惑性的選擇,因為包含NULL值的規則運算返回NULL結果。然而,聚合函數(除COUNT(*)以外)都忽略NULL值。D不正確是因為A正確。

(4) 答案為C。COUNT(*)計算所有行,包括具有NULL值的那些行。COUNT(SALARY)只計算非空行。

A、B和D不正確。

(5) 答案為C。NVL函數將一個NULL值轉換為100。之后,AVG函數將SALARY值相加,得到結果1000。用這個值除以記錄的數量,返回100。

A、B和D不正確。如果選擇AVG(NVL(SALARY,0)),就會返回B中的結果。值得注意的是,如果選擇AVG(SALARY),也會返回100,因為AVG函數求非空值的和,用這個和除以包含非空SALARY值的行數。因此可以像這樣計算AVG(SALARY):900/9=100。

(6) 答案為C。依據SALARY列劃分數據集。該語句創建兩個組:一個組的SALARY值為100,另一個組包含一個空的SALARY值。第一個組中各行的SALARY值100的平均長度是3。NVL函數首先將NULL薪水值轉換為數字0, SALARY的平均長度是1。SUM函數作用于兩個組,將值3和1相加,返回4。

A、B和D不正確。A似是而非,因為分組函數不可能嵌套多于兩層。雖然有4個函數,但只有兩個是分組函數,而其他函數是在分組函數之前計算的單行函數。如果選擇表達式SUM (AVG(LENGTH(SALARY))),就會返回B中的結果。D不正確是因為C正確。

(7) 答案為A。有12個不同的DEPARTMENT_ID值。這是分組特性,因此創建12個組,其中一個組包含空的DEPARTMENT_ID值。因此,返回12行。

B、C和D不正確。B不正確是因為空的DEPARTMENT_ID值是一個有效的唯一值,可根據它進行分組。C不正確是因為返回了12行。D不正確是因為A正確。

(8) 答案為C。要使用GROUP BY子句,分組函數必須出現在SELECT列表中。

A、B和D不正確,因為從語法上看語句不準確,而且Oracle不接受這種形式。不要將名為MAX_SALARY的列誤解成MAX(SALARY)函數。

(9) 答案為B。依據其公共DEPT_ID值創建兩個組。DEPT_ID值為10的組由5行組成,這些行的SALARY值都是100。因此,該組的SUM(SALARY)函數返回500,它滿足HAVING SUM (SALARY) > 400子句。DEPT_ID值為20的組有4行,這些行的SALARY值為100,并且有一行包含空的SALARY。SUM(SALARY) 只返回400,該組不滿足HAVING子句的條件。

A、C和D不正確。注意SELECT語句中的SUM(NVL(SALARY,100))表達式。這個表達式選擇輸出的格式,它不限制或者限定數據集。如果HAVING子句確定有兩組可以應用聚合函數,A就是正確的,C不正確是因為只有一個要聚合的集合,所以只返回一行。D不正確是因為B正確。

(10) 答案為A。依據其公共DEPT_ID值創建兩個組。DEPT_ID值為10的組由5行組成,這些行的SALARY值是100。因此,該組的SUM(NVL(SALARY,100))函數返回500,它滿足HAVING SUM(NVL(SALARY,100))>400子句。DEPT_ID值為20的組有4行,這些行的SALARY值為100,并且有一行包含空的SALARY。SUM(NVL(SALARY,100)) 返回500,這一組滿足HAVING子句,因此返回2行。

B、C和D不正確。雖然SELECT子句包含SUM(SALARY),它對兩個組返回500和400,但是HAVING子句包含SUM(NVL(SALARY,100))表達式,它指定組級行的包含和排除標準。如果HAVING子句確定有一組可以應用聚合函數,B就是正確的,C不正確是因為有兩個要聚合的集合,所以返回兩行。D不正確,因為A正確。

(11) 答案為A和E。標準偏差在數學上定義為其方差的平方根。LISTAGG函數在WITHIN GROUP子句中使用ORDER BY給數據排序,返回一個有序的連接字符串。

B、C和D不正確。所有這些語句都是錯誤的。

(12) 答案是B。數據集不使用GROUP BY子句分組,因此LISTAGG函數把整個表作為一個數據集來處理。返回一個很長的行,其中包含LAST_NAME值的連接列表。

A、C、D和E不正確。A不正確是因為LISTAGG至少返回一行。如果數據集分為10和107個組,C和D就是正確的。E不正確,因為正確答案是B。

主站蜘蛛池模板: 嘉峪关市| 长春市| 湟源县| 神木县| 阿拉善右旗| 海南省| 卢龙县| 沛县| 洛宁县| 新和县| 达拉特旗| 漳州市| 廉江市| 剑河县| 灵武市| 刚察县| 仁布县| 萨迦县| 西畴县| 许昌县| 迁西县| 吴忠市| 小金县| 黄梅县| 信丰县| 枣庄市| 新昌县| 山丹县| 扎赉特旗| 治多县| 莱芜市| 和龙市| 云林县| 泰安市| 阿拉善右旗| 温宿县| 阳信县| 玛多县| 临江市| 三原县| 临夏市|