使用组函数问题

使用组函数问题


1. 以下哪个不是 GROUP BY 函数?

  1. 最大限度
  2. 最小
  3. NVL
  4. 平均收入

答案:C. NVL 是一个通用函数,用于为 NULL 值提供替代值。函数 MAX、MIN 和 AVG 可用作 GROUP BY 函数。

2. SELECT 查询中没有 GROUP BY 子句可以使用以下哪些函数?

  1. 数数
  2. 最大限度
  3. 最小
  4. 平均收入

答案:A、B、C、D。只要在 SELECT 查询中没有选择其他列所有列出的组函数都可以在查询中使用。

3. 以下哪个SELECT 查询返回给员工的薪酬最高的部门编号?(考虑给定的表结构)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT department_id , max(salary ) FROM employees ;
  2. SELECT department_id , max(salary ) FROM employees  GROUP BY department_id ;
  3. SELECT max(salary ) FROM employees  GROUP BY department_id ;
  4. SELECT max(salary ) FROM employees ;

答案:B . MAX 函数可用于返回每个组由一个部门组成的部门的最高工资。

4. 下列关于 COUNT 函数的说法中哪些是正确的?

  1. COUNT 函数计算行数
  2. COUNT(*) 函数计算具有重复和 NULL 值的行数
  3. COUNT(DISTINCT) 函数计算不同行的数量
  4. COUNT(*) 等价于 COUNT(ALL)

答案:B . COUNT(*) 计算包含重复和 NULL 的行数。使用 DISTINCT 和 ALL 关键字来限制重复值和 NULL 值。

5. GROUP BY 函数接受哪些适当的数据类型?

  1. 嵌套表
  2. 数字
  3. CLOB
  4. 日期

答案:B . 带参数的函数的数据类型可以是 CHAR、VARCHAR2、NUMBER 或 DATE。

6.表T_COUNT有12个数值,分别为1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null。预测以下查询的输出。

SELECT COUNT (*) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. 抛出异常,因为 COUNT 函数不适用于 NULL 值

答案: A. COUNT(*) 计算包括重复和 NULL 在内的行数。使用 DISTINCT 和 ALL 关键字来限制重复值和 NULL 值。

7、表T_COUNT有12个数值,分别为1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null。预测以下查询的输出。

SELECT COUNT (num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. 抛出异常,因为 COUNT 函数不适用于 NULL 值

答案:C. COUNT(列)忽略 NULL 值但计算重复项。

8、表T_COUNT有12个数值,分别为1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null。预测以下查询的输出。

SELECT COUNT (ALL num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. 抛出异常,因为 COUNT 函数不适用于 NULL 值

答案:C. COUNT(ALL column) 忽略 NULL 值但计算重复项。

9、表T_COUNT有12个数值,分别为1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null。预测以下查询的输出。

SELECT COUNT (DISTINCT num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. 抛出异常,因为 COUNT 函数不适用于 NULL 值

答案:B. COUNT(DISTINCT 列)计算不同的非空值。

10. 在 SQL* Plus 中执行以下查询时会发生什么?

SELECT COUNT() FROM dual;
  1. 执行成功,不返回任何输出
  2. 成功执行并返回输出为“1”
  3. 抛出异常“ORA-00909:参数数量无效”
  4. 引发异常“ORA-00904:“COUNT”:无效标识符”,因为 COUNT 函数不适用于 DUAL 表

答案:C. COUNT 函数至少需要一个参数,该参数可以是带有 [ALL | DISTINCT] 修饰符或“*”。

11.这里有几个关于SQL中VARIANCE函数的语句。

一世。该函数接受多个数字输入并返回所有值的方差

ii. 该函数接受一个数字列并返回所有列值的方差,包括 NULL

三、该函数接受一个数字列并返回所有列值的方差,不包括 NULL


从以下选项中选择正确的组合。

  1. 我和三
  2. 我和二
  3. ii

答案:C . VARIANCE 函数接受单个数字参数作为列名,并返回所有列值的方差(考虑 NULL)。

12. 以下哪个不是 SQL 中的 GROUP BY 扩展?

  1. 通过…分组
  2. 分组集
  3. 立方体
  4. 卷起

答案:A. GROUPING SETS 操作可用于通过单个查询执行多个 GROUP BY 聚合。

13. 选择有关以下查询的正确语句。考虑给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT department_id , SUM(salary )
FROM employees 
GROUP BY department_id ;
  1. SUM 是按功能分组的,因为它处理在一个部门工作的一组员工
  2. SUM 是一个聚合函数,因为它为每组数据生成一个结果
  3. SUM 是一个单行函数,因为它返回一个组的单个值,即部门
  4. SUM 是一个 group by 扩展函数,因为它使用 GROUP BY 子句对部门进行逻辑分组

答案: A. SUM 是一个组函数,它计算在一个部门工作的一组员工的工资总和。

14. 哪个子句用于使用 group by 函数根据聚合结果过滤查询输出?

  1. 在哪里
  2. 限制
  3. 组在哪里

答案:D. HAVING 子句用于限制分组结果。您可以使用 HAVING 子句指定要显示的组,从而根据聚合信息进一步限制组。HAVING 子句可以在 GROUP BY 子句之前,但建议您将 GROUP BY 子句放在首位,因为它更符合逻辑。在将 HAVING 子句应用于 SELECT 列表中的组之前,已形成组并计算组函数。

15. 检查给定的表结构并预测以下查询的结果。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT count(*)
FROM employees 
WHERE comm = NULL;
  1. 查询返回没有佣金的员工人数
  2. 查询抛出错误,因为在搜索 NULL 值时不能使用等号
  3. 查询返回佣金为NULL值的部门员工人数
  4. 查询抛出错误,因为查询中缺少 GROUP BY 子句

答案:B.使用 WHERE 条件排除 NULL 是一种引导查询忽略 NULL 的方法。但是这里使用 IS NULL 运算符是错误的。条件应该是’WHERE comm IS NULL’。

16.下列关于群函数的说法正确的是?

  1. MIN 函数只能用于数值数据。
  2. MAX 函数只能用于日期值。
  3. AVG 函数只能用于数值数据。
  4. SUM 函数不能是嵌套函数的一部分。

答案:C . AVG 函数只能用于数值。其他具有此类限制的函数是 SUM、STDDEV 和 VARIANCE。

17. 以下哪个是有效的 SELECT 语句?

  1. SELECT AVG(retail-cost) FROM books GROUP BY category;
  2. SELECT category, AVG(retail-cost) FROM books;
  3. SELECT category, AVG(retail-cost) FROM books WHERE AVG(retail-cost) > 8.56 GROUP BY category;
  4. SELECT category, AVG(retail-cost) Profit FROM books GROUP BY category HAVING profit > 8.56;

答:A . GROUP BY 或 HAVING 子句中不能使用列别名。

18.下列说法正确的是?

  1. WHERE 子句只能包含一个组函数,如果该函数也没有在 SELECT 子句中列出。
  2. 不能在 SELECT、FROM 或 WHERE 子句中使用组函数。
  3. HAVING 子句总是在 WHERE 子句之前处理。
  4. GROUP BY 子句总是在 HAVING 子句之前处理。

答案:D。虽然如果 HAVING 子句在 GROUP BY 子句之前,Oracle 不会引发错误,但只有在处理 GROUP BY 子句并且组准备好过滤后才会处理它。

19. 以下哪个不是有效的 SQL 语句?

  1. SELECT MIN(pubdate) FROM books GROUP BY category HAVING pubid = 4;
  2. SELECT MIN(pubdate) FROM books WHERE category = 'COOKING';
  3. SELECT COUNT(*) FROM orders WHERE customer# = 1005;
  4. SELECT MAX(COUNT(customer#)) FROM orders GROUP BY customer#;

答案:A。

20.下列说法正确的是?

  1. COUNT 函数可用于确定包含 NULL 值的行数。
  2. 组函数中只包含不同的值,除非 SELECT 子句中包含 ALL 关键字。
  3. WHERE 子句限制处理哪些行。
  4. HAVING 子句确定在查询结果中显示哪些组。

答案:C、 D。WHERE 子句在行被分组和处理之前限制行,而 HAVING 子句限制组。

21. 以下哪个是有效的 SQL 语句?

  1. SELECT customer#, order#, MAX(shipdate-orderdate) FROM orders GROUP BY customer# WHERE customer# = 1001;
  2. SELECT customer#, COUNT(order#) FROM orders GROUP BY customer#;
  3. SELECT customer#, COUNT(order#) FROM orders GROUP BY COUNT(order#);
  4. SELECT customer#, COUNT(order#) FROM orders GROUP BY order#;

答案:B . GROUP BY 子句必须包含除 group 函数内部使用的列之外的所有列。

22. 以下哪个SELECT语句只列出了利润最大的书?

  1. SELECT title, MAX(retail-cost) FROM books GROUP BY title;
  2. SELECT title, MAX(retail-cost) FROM books GROUP BY title HAVING MAX(retail-cost);
  3. SELECT title, MAX(retail-cost) FROM books;
  4. 以上都不是

答案:A。

23. 以下哪些说法是正确的?

1. 组函数可以嵌套在组函数中。

2. 组函数可以嵌套在单行函数中。

3. 单行函数可以嵌套在组函数中。

  1. 1
  2. 2
  3. 3
  4. 1 和 3

答案:A、B、C。组函数只能嵌套到两个深度。组函数可以嵌套在单行函数中(AVG 嵌入到 TO_CHAR 函数中)。此外,单行函数可以嵌套在组函数中。

24. 以下哪个函数用于计算存储在指定列中的总值?

  1. 数数
  2. 添加
  3. 全部的

答案:D. SUM 函数用于求数值相加。

25. 以下哪个 SELECT 语句列出了 Family 类别中所有书籍的最高零售价?

  1. SELECT MAX(retail) FROM books WHERE category = 'FAMILY';
  2. SELECT MAX(retail) FROM books HAVING category = 'FAMILY';
  3. SELECT retail FROM books WHERE category = 'FAMILY' HAVING MAX(retail);
  4. 以上都不是

答案: A.由于类别 FAMILY 必须在分组之前进行限制,因此必须使用 WHERE 子句而不是 HAVING 子句过滤表行。

26. 以下哪些函数可用于在计算中包含 NULL 值?

  1. NVL
  2. 最大限度
  3. 最小

答案:B. NVL 是一个通用函数,用于为 NULL 值提供替代值。它确实可以在使用 AVG、STDDEV 和 VARIANCE 组函数的算术计算中产生影响。

27. 以下哪项不是有效的陈述?

  1. 您必须在组函数中输入 ALL 关键字以包含所有重复值。
  2. AVG 函数可用于查找两个日期之间的平均计算差异。
  3. MIN 和 MAX 函数可用于 VARCHAR2 列。
  4. 上述所有的

答案: A. ALL 关键字计算重复但忽略 NULL。‘*’ 和列名规范也包含重复项。

28. 以下哪个 SQL 语句决定了其他客户推荐的客户总数?

  1. SELECT customer#, SUM(referred) FROM customers GROUP BY customer#;
  2. SELECT COUNT(referred) FROM customers;
  3. SELECT COUNT(*) FROM customers;
  4. SELECT COUNT(*) FROM customers WHERE referred IS NULL;

答案:B. 将所有客户视为一组,COUNT(referred) 将仅计算被某人推荐的客户。COUNT(referred) 将忽略列的 NULL 值。

29. 确定 SELECT 语句中以下子句的正确执行顺序。

1.选择

2.发件人

3.哪里

4.GROUP BY

5.有

6.订购者

  1. 2-3-4-5-1-6
  2. 1-2-3-4-5-6
  3. 6-5-4-3-2-1
  4. 5-4-2-3-1-6

答:A.处理顺序从FROM子句开始获取表名,然后用WHERE子句限制行,用GROUP BY子句分组,用HAVING子句限制组。ORDER BY 子句是最后一个要处理以对最终数据集进行排序的子句。

30. 以下哪个子句用于根据一列或一组列对一组行进行分组?

  1. 在哪里
  2. 通过…分组
  3. 分组

答案:C. GROUP BY 子句根据指定的列列表形成数据组。

31. 下列哪些群函数可用于总体方差和总体标准差问题?

  1. VAR_POP
  2. STDDEV_POP
  3. 方差
  4. STDDEV_SASMP

答案:A、B。

32. 在 SELECT 查询中选择可以出现组函数的位置。

  1. 选择语句
  2. WHERE 子句
  3. ORDER BY 子句
  4. GROUP BY 子句

答案:A、C、D。组函数可以出现在SELECT、ORDER BY 和HAVING 子句中。如果在 WHERE 或 GROUP BY 子句中使用组函数,Oracle 会引发异常。

33. 检查给定的 EMPLOYEES 表的结构。哪个查询会返回每个部门的最低工资?

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT department_id , MIN (salary ) from EMPLOYEES ;
  2. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY department_id ;
  3. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY salary ;
  4. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY employee_id ;

答案: B.MIN 函数返回由部门组成的组中的最低工资。

34. 检查表 EMPLOYEES 的结构并解释以下查询的输出

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT COUNT(*), COUNT(all comm) FROM employees ;
  1. 它会引发错误,因为在查询中只能使用一个聚合函数。
  2. 它抛出错误,因为缺少 GROUP BY 子句。
  3. 它成功执行并为两者返回相同的值。
  4. 它在 COUNT(*) 包括 NULL 和 COUNT(all comm) 不包括 NULL 的情况下成功执行。

答案:D。

35. 下列关于群函数的说法正确的是?

  1. 您可以在 SELECT 语句的任何子句中使用组函数。
  2. 您只能在 select 子句的列列表和 SELECT 语句的 WHERE 子句中使用组函数。
  3. 您可以通过对单行列进行分组,将单行列与 SELECT 语句的列列表中的组函数混合使用。
  4. 您可以将列名、表达式、常量或函数作为参数传递给组函数。

答案:C.组函数只能嵌套到两个深度。组函数可以嵌套在单行函数中(AVG 嵌入到 TO_CHAR 函数中)。此外,单行函数可以嵌套在组函数中。

36. 检查表 EMPLOYEES 的结构。您希望通过执行以下 SQL 语句来创建“emp_dept_sales”视图。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
CREATE VIEW emp_dept_sales
AS
SELECT d.department_name , sum(e.salary )
FROM employees  e, departments  d
where e.department_id =d.department_id 
GROUP by d.department_name ;

关于上述语句的执行,哪个说法是正确的?

  1. 将创建视图,您可以对视图执行 DLM 操作
  2. 视图不会被创建,因为创建视图时不允许使用 join 语句
  3. 不会创建视图,因为创建视图时不允许使用 GROUP BY 子句
  4. 将创建视图,但不允许对视图进行 DML 操作

答案:D . 在视图上执行 DML 操作的规则。如果视图包含组函数或 GROUP BY 子句或 DISTINCT 关键字,则无法通过视图添加数据。伪列 ROWNUM 关键字 由表达式定义的列 NOT NULL 视图未选择的基表中的列。

37.下列关于观点的说法,哪些是正确的?

  1. 定义视图的子查询不能包含 GROUP BY 子句
  2. 使用具有 DISTINCT 关键字的子查询创建视图可以更新
  3. 可以在使用具有表的所有 NOT NULL 列的子查询创建的视图上执行数据操作语言 (DML) 操作
  4. 使用具有伪列 ROWNUM 关键字的子查询创建的视图无法更新

答案:C、D。在视图上执行 DML 操作的规则。如果视图包含组函数或 GROUP BY 子句或 DISTINCT 关键字,则无法通过视图添加数据。伪列 ROWNUM 关键字 由表达式定义的列 NOT NULL 视图未选择的基表中的列。

38. 检查给定的表结构。

SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)

以下 SQL 查询中的哪个子句会产生错误?

SELECT department_id , avg(salary )
FROM departments 
WHERE upper(job) in ('SALES','CLERK')
GROUP BY job
ORDER BY department_id ;
  1. 在哪里
  2. 选择
  3. 订购者
  4. 通过…分组

答案:D. GROUP BY 子句必须包含出现在 SELECT 语句中的所有列。它引发错误,因为 JOB 不是选定的列。它应该使用 DEPARTMENT_ID 代替 JOB。

39. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

以下哪个 SELECT 查询将显示每个工作类别的最高和最低工资?

  1. SELECT job, MAX(salary ), MIN (salary ) FROM employees  GROUP BY department_id ;
  2. SELECT job, MAX(salary ), MIN (salary ) FROM employees  GROUP BY job;
  3. SELECT job, MAX(salary ), MIN (salary ) FROM employees ;
  4. 两个聚合函数不能在 SELECT 语句中一起使用。

答案:B . SELECT 语句中可以出现多个组函数。

40. 考虑给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

检查以下查询中的错误。

SELECT department_id 
FROM employees 
WHERE hiredate > '01-JAN-1985'
AND COUNT(*) > 2
GROUP by department_id 
HAVING SUM (salary ) > 1000;
  1. 它成功执行并生成所需的结果。
  2. 它会产生一个错误,因为 COUNT(*) 也应该在 SELECT 子句中指定。
  3. 它成功执行但没有产生任何结果,因为应该使用 COUNT(prod_id) 而不是 COUNT(*)。
  4. 它产生一个错误,因为 COUNT(*) 应该只在 HAVING 子句中而不是在 WHERE 子句中。

答案:D . WHERE 子句中不能使用组函数。可以出现在 SELECT、HAVING 和 ORDER BY 子句中。

41. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

预测以下查询的结果

SELECT job, COUNT(employee_id ),sum(salary )
FROM employees 
GROUP BY job
HAVING SUM (salary ) > 5000;
  1. 它成功执行并列出每个工作类别下的员工人数,但忽略 HAVING 子句,因为“salary”不在 GROUP BY 子句中。
  2. 它抛出错误,因为 HAVING 子句无效。
  3. 它引发错误,因为“salary”未包含在 GROUP BY 子句中。
  4. 它执行成功并列出每个类别下工资总和大于 5000 的员工数。

答案:D . HAVING 子句限制组结果。COUNT 函数用于计数,而 SUM 函数用于将数值相加。

42. 在包含 NULL 值的列上使用组函数是什么意思?

  1. 列上的组函数忽略 NULL 值。
  2. 返回日期的列上的组函数包括 NULL 值。
  3. 返回数字的列上的组函数包括 NULL 值。
  4. 列上的组函数不能准确地用于包含 NULL 值的列。

答案: A.除 COUNT 函数外,所有组函数都忽略 NULL 值。

43.关于子查询中GROUP BY列的使用,下列哪些说法是正确的?

  1. 子查询可以包含 GROUP BY 和 ORDER BY 子句。
  2. 子查询不能包含 GROUP BY 和 ORDER BY 子句。
  3. 子查询可以包含 ORDER BY 但不能包含 GROUP BY 子句。
  4. 子查询不能包含 ORDER BY,但可以包含 GROUP BY 子句。

答案: A.与主查询一样,子查询可以包含 GROUP BY 和 ORDER BY 子句。

检查给定的表格结构并回答下面的问题 44 到 49。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

44. 预测以下查询的结果

SELECT avg(max(salary ))
FROM employees 
GROUP BY department_id 
HAVING avg(max(salary ))>100;
  1. 它执行成功。
  2. 由于 HAVING 子句无效,它给出了错误。
  3. 它给出了错误,因为 GROUP BY 表达式无效。
  4. 它给出了一个错误,因为聚合函数不能嵌套在 SELECT 语句中。

答案:B . HAVING 子句不允许聚合函数的嵌套。

45. 预测以下查询的输出

SELECT avg(salary ), department_id 
FROM employees 
GROUP BY department_id ;
  1. 它给出错误,因为聚合函数不能出现在 SELECT 子句之后。
  2. 它给出错误,因为 GROUP BY 子句无效。
  3. 它执行时没有错误,但不产生任何输出。
  4. 它执行成功并给出每个部门的平均工资。

答案:D.可以在 SELECT 查询中以任何顺序(在按列分组之前或之后)使用组函数。

46. 预测以下查询的输出

SELECT lower(job),avg(salary )
FROM employees 
GROUP BY upper(job);
  1. 它成功执行并以小写字母显示“job”。
  2. 它成功执行但在原始情况下显示“作业”。
  3. 它抛出错误,因为单行和聚合函数不能一起使用。
  4. 它抛出错误,因为 SELECT 列表中的大小写转换与大小写转换 GROUP BY 子句不匹配。

答案:D . LOWER 函数是一个单行函数,必须在 GROUP BY 子句中指定,以作为 EMPLOYEES 数据分组的基础。

47. 以下哪个查询执行成功?

  1. SELECT employee_id , COUNT(hiredate-sysdate) FROM employees ;
  2. SELECT AVG(salary ), MAX(salary ) FROM employees ;
  3. SELECT AVG(salary ), MAX(salary ) FROM employees  GROUP BY department_id ;
  4. SELECT AVG(hiredate) FROM employees ;

答案:B,C。第一个查询操作整个 EMPLOYEES 数据,第二个查询按部门分组处理数据。

48. 找出以下 SELECT 语句中的错误。

SELECT department_id , AVG (salary )
FROM employees 
GROUP BY department_id 
HAVING department_id  > 10;
  1. 它执行成功并显示高于 10 的部门的平均工资。
  2. 它抛出错误,因为在 HAVING 子句中不能使用非聚合列。
  3. 它执行成功,但为部门显示错误的结果。
  4. 它抛出错误,因为 HAVING 子句必须放在 GROUP BY 子句之前。

答:A. GROUP BY 表达式可以在 HAVING 子句中使用,以从最终数据集中过滤掉组。

49. 预测以下查询的输出

SELECT department_id , AVG (salary )
FROM employees 
GROUP BY department_id 
HAVING (department_id >10 and AVG(salary )>2000);
  1. 它抛出错误,因为在 HAVING 子句中不能给出多个条件。
  2. 它抛出错误,因为不能在 HAVING 子句中使用非聚合列。
  3. 执行成功,显示部门平均工资10以上2000以上。
  4. 它执行成功,但没有显示结果。

答案: C。HAVING 子句可以强加使用 AND 或 OR 运算符过滤组的多个条件。

50. 以下哪些组函数可以与 DATE 值一起使用?

  1. 平均收入
  2. 最小
  3. 数数

答案:B、D。组函数 AVG 和 SUM 只能用于数值数据。

51.以下哪些说法是正确的?

  1. AVG 和 SUM 只能用于数值数据类型。
  2. STDDEV 和 VARIANCE 只能用于数值数据类型。
  3. MAX 可用于 LONG 数据类型。
  4. MAX 和 MIN 不能与 LOB 或 LONG 数据类型一起使用。

答案:A、B、D。组函数 AVG、SUM、VARIANCE 和 STDDEV 只能用于数值数据。所有组函数都不能用于 LONG 数据类型。

52. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

确定以下查询中的错误。

SELECT department_id , avg(salary ), count(hiredate)
FROM employees 
GROUP BY department_id ;
  1. 不能在单个 SELECT 查询中使用多个聚合函数
  2. GROUP BY 子句无效
  3. COUNT 函数不能与 DATE 值一起使用
  4. 没有错误,它执行成功

答案:D。

53. 以下哪个组函数可以与 LOB 数据类型一起使用?

  1. 最大限度
  2. 最小
  3. 数数
  4. 都不是

答案:D . LOB 数据类型不能使用聚合函数。

54. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

预测以下两个查询的输出

查询 – 1

SELECT avg(comm)
FROM employees ;

查询 – 2

SELECT avg(nvl(comm,0))
FROM employees ;
  1. 两个查询产生相同的结果
  2. Query – 1 和 Query – 2 产生不同的结果,因为 Query-1 考虑 COMM 的 NULL 值,而 Query-2 将 COMM 的 NULL 值替换为零
  3. 查询 – 1 产生错误,因为 COMM 具有 NULL 值
  4. 查询 – 2 产生错误,因为 NVL 不能与聚合函数嵌套。

答案:B . AVG 函数在计算数值数据的平均值时会忽略 NULL 值。AVG(column) 将仅计算非空值的平均值。但是,如果使用 NVL 用零替换 NULL,则将考虑所有值。

55. 选择关于 GROUP BY 子句的正确语句。

  1. 可以在 GROUP BY 子句中使用列别名。
  2. GROUP BY 列必须在 SELECT 子句中。
  3. GROUP BY 子句必须与 HAVING 子句一起出现在 SELECT 查询中。
  4. GROUP BY 子句必须出现在 SELECT 查询中的 WHERE 子句之后。

答案:D。按照处理顺序,SELECT 查询中的 GROUP BY 子句必须出现在 WHERE 子句之后。

56. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

预测以下查询的结果

SELECT department_id ,avg(salary )
FROM employees 
GROUP BY department_id , job
ORDER BY department_id ;
  1. 它引发错误,因为 GROUP BY 列列表与 SELECT 列列表不匹配。
  2. 它成功执行并产生每个部门工作类别的平均工资。
  3. 它成功执行并为每个工作类别的部门产生平均工资。
  4. 它引发错误,因为 GROUP BY 和 ORDER BY 子句具有不同的列列表。

答案:B。虽然 GROUP BY 子句对组进行了隐式排序,但 GROUP BY 和 ORDER BY 子句可以在查询中一起使用。

57. 您应该使用哪个子句在使用组函数的查询中排除组结果?

  1. 在哪里
  2. 通过…分组
  3. 订购者

答案:B. HAVING 子句用于限制组。

检查给出的表格结构并回答后面的问题 58 和 59。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

58. 预测以下查询的结果

SELECT department_id ,avg(salary )
FROM employees 
HAVING avg(salary )>2000
GROUP BY department_id 
ORDER BY department_id 
  1. 它执行成功。
  2. 它抛出错误,因为 HAVING 子句在 GROUP BY 子句之前。
  3. 它抛出错误,因为 HAVING 子句使用聚合函数。
  4. 它执行但不显示任何结果,因为 HAVING 子句在 GROUP BY 子句之前。

答: A. HAVING 子句可以在 GROUP BY 子句之前,但只有在计算出分组结果后才进行处理。

59. 预测以下查询的结果

SELECT department_id , COUNT(first_name )
FROM employees 
WHERE job IN ('SALESMAN','CLERK','MANAGER','ANALYST')
GROUP BY department_id 
HAVING AVG(salary ) BETWEEN 2000 AND 3000;
  1. 它返回错误,因为 BETWEEN 运算符不能在 HAVING 子句中使用。
  2. 它返回一个错误,因为 WHERE 和 HAVING 子句不能在同一个 SELECT 语句中使用。
  3. 它返回错误,因为 WHERE 和 HAVING 子句不能用于在同一列上应用条件。
  4. 它执行成功。

答案: D。WHERE 子句限制参与组子句处理的行数。

60. 关于 SELECT 语句中的 WHERE 和 HAVING 子句,哪些说法是正确的?

  1. HAVING 子句可与子查询中的组函数一起使用。
  2. WHERE 子句可用于在将行分组后排除行。
  3. WHERE 子句可用于在将行分组之前排除行。
  4. 只有当 WHERE 和 HAVING 子句应用于表中的不同列时,它们才能在同一语句中使用。

答案:A、 C。WHERE 和 HAVING 子句可以在查询中一起使用。WHERE 在组处理之前排除行,而 HAVING 限制组。

检查给出的表格结构并回答后面的问题 61 和 62。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

61. 预测以下查询的结果。

SELECT department_id , avg(salary )
FROM employees 
HAVING avg(salary ) > min(salary )
GROUP BY department_id ;
  1. 它抛出一个错误,因为在 HAVING 子句中使用的聚合函数必须在 SELECT 列表中。
  2. 它抛出错误,因为 HAVING 子句出现在 GROUP BY 子句之前。
  3. 显示平均工资高于部门最低工资的部门。
  4. 显示平均工资高于组织最低工资的部门。

答案:C. HAVING 子句可以使用组函数来过滤组。

62. 解释以下查询的输出。

SELECT SUM(AVG(LENGTH(first_name )))
FROM employees  
GROUP BY department_id ;
  1. 它计算每个部门员工姓名长度平均值的总和。
  2. 它计算每个部门员工姓名的平均长度。
  3. 它抛出错误,因为单行函数不能与组函数一起使用。
  4. 它抛出错误,因为组列 DEPARTMENT_ID 未在 SELECT 列表中使用。

答案: A.组函数可以与 SELECT 查询中的单行或通用函数一起使用。

63. 群函数最多可以嵌套多少层?

  1. 1
  2. 2
  3. 3
  4. 无限

答案:B.组函数最多可以嵌套 2 层。但是,单行函数可以嵌套到任意数量的级别。

64. GROUP BY 子句创建的组内的组数限制是多少?

  1. 1
  2. 2
  3. 3
  4. 没有限制

答案:D。可以组成的组和子组的数量没有限制。

65. 选择关于 HAVING 子句的正确语句。

  1. HAVING 子句是 SELECT 语句中的可选子句。
  2. 如果 SELECT 语句使用 GROUP BY 子句,则 HAVING 子句是强制性子句。
  3. HAVING 子句只有在使用 GROUP BY 子句时才能出现在 SELECT 语句中。
  4. 如果 SELECT 语句使用 GROUP BY 子句,则 HAVING 子句是强制性子句。

答案:A、C。如果存在 GROUP BY 子句,则 HAVING 子句只能出现在查询中,反之则不然。

66. 以下查询的输出是什么。

SELECT count(*) FROM dual GROUP BY dummy;
  1. 1
  2. 0
  3. 无效的
  4. 引发错误,因为无法在 DUAL 表上应用组函数。

答案: A. DUAL 表包含值为 ‘X’ 的 CHAR(1) 类型的单列 DUMMY。

根据以下情景,回答67-74题。

一个组织有 14 名员工,固定工资为 1000。公司招聘了 5 名新员工,工资部门尚未确定工资。但是,在月末处理期间,人力资源薪资部门会生成几份报告来核对组织的财务数据。检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

67. 以下查询的输出是什么?

SELECT SUM (salary ) FROM employees ;
  1. 无效的
  2. 14000
  3. 19000
  4. 0

答案:B . SUM 函数将员工的工资相加。

68. 以下查询的输出是什么?

SELECT AVG (salary ) FROM employees ;
  1. 1000
  2. 736.84
  3. 无效的
  4. 0

答案: A. AVG (salary ) 函数计算工资的平均值并忽略 NULL 值。在这种情况下,AVG(salary)=(14*1000)/14=1000。

69. 以下查询的输出是什么?

SELECT AVG (nvl(salary ,0)) FROM employees ;
  1. 1000
  2. 无效的
  3. 736.84
  4. 0

答案:C . AVG(NVL(salary ,0)) 为 NULL 提供了一个替代值,并使它们能够参与平均值计算。在这种情况下,(14*1000)/19 = 736.84。

70. 以下查询的输出是什么?

SELECT VARIANCE (salary ) FROM employees ;
  1. 1000
  2. 0
  3. 无效的
  4. 204678.36

答案:B . VARIANCE (salary) 计算salary 列值的方差,忽略NULL。

71. 以下查询的输出是什么?

SELECT VARIANCE (nvl(salary ,0)) FROM employees ;
  1. 1000
  2. 0
  3. 无效的
  4. 204678.36

答案:D . VARIANCE (NL(salary ,0)) 计算工资列值的方差,包括 NULL。

72. 以下查询的输出是什么?

SELECT STDDEV (salary ) FROM employees ;
  1. 1
  2. 1000
  3. 0
  4. 无效的

答案: C。STDDEV (salary) 计算salary 列值的标准偏差,忽略NULL。

73. 以下查询的输出是什么?

SELECT STDDEV (nvl(salary ,0)) FROM employees ;
  1. 0
  2. 452.41
  3. 1000
  4. 无效的

答案:B . STDDEV (nvl(salary ,0)) 计算工资列值的标准偏差,包括 NULL。

74. 以下查询的输出是什么?


从员工中选择 count(*),count(salary) ;

  1. 19,19
  2. 14,19
  3. 19,14
  4. 14,14

答案:C. COUNT(*) 包括 NULL,而 COUNT(salary) 忽略 NULL 值。

75. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

以下哪个查询会给出超过 5 名员工在其中工作的部门?

  1. SELECT department_id  FROM employees  WHERE COUNT(*) > 5 GROUP BY department_id ;
  2. SELECT department_id  FROM employees  HAVING COUNT(*) > 5;
  3. SELECT department_id  FROM employees  GROUP BY employee_id  HAVING COUNT(*) > 5;
  4. SELECT department_id  FROM employees  GROUP BY department_id  HAVING COUNT(*) > 5;

答案:D。

76. 关于GROUP BY 的CUBE 扩展,下列哪些是正确的?

  1. 允许使用单个查询执行多个 GROUP BY 子句。
  2. 对包含的所有可能的列组合执行聚合。
  3. 根据提供的列列表执行递增级别的累积小计。
  4. 以上都不是

答案:B. CUBE、ROLLUP 是用于 OLAP 处理的 GROUP BY 扩展。每当形成新的列排列时,CUBE 都会聚合结果。

使用以下 SELECT 语句回答以下问题 77 至 82:

1 SELECT customer#, COUNT(*)
2 FROM customers JOIN orders USING (customer#)
3 WHERE orderdate > '02-APR-09'
4 GROUP BY customer#
5 HAVING COUNT(*) > 2;

77. SELECT 语句的哪一行用于限制查询处理的记录数?

  1. 1
  2. 3
  3. 4
  4. 5

答案:B. WHERE 子句用于在组形成之前限制行。

78. SELECT 语句的哪一行用于限制查询结果中显示的组?

  1. 1
  2. 3
  3. 4
  4. 5

答案:D. HAVING 用于限制分组处理结束后的分组结果。

79. SELECT 语句的哪一行用于对存储在数据库中的数据进行分组?

  1. 1
  2. 3
  3. 4
  4. 5

答案:C. GROUP BY 子句使用 group by 列对表中的数据进行分组。

80. 必须包含哪个子句才能使查询成功执行?

  1. 1
  2. 3
  3. 4
  4. 5

答案:C。因为 SELECT 子句包含 CUSTOMER# 列,所以必须将 GROUP BY 子句与 CUSTOMER# 列一起使用。

81.在SELECT查询中使用COUNT(*)的目的是什么?

  1. 指定表中的记录数
  2. 每个客户下的订单数量
  3. 指定表中 NULL 值的数量
  4. 已下订单的客户数量

答案:B。它统计一个组下处理的行数。在这种情况下,group 由客户组成,COUNT(*) 计算每个客户下的订单。

82. 以下哪个函数可以用来确定JustLee Books最近处理的所有订单的最早发货日期?

  1. 计数功能
  2. 最大值函数
  3. 最小值功能
  4. STDDEV 函数

答案:C. MIN 函数用于检索列的最小值。当与日期列一起使用时,它从列中获取最小日期。

83. 以下哪个不是有效的 SELECT 语句?

  1. SELECT STDDEV(retail) FROM books;
  2. SELECT AVG(SUM(retail)) FROM orders NATURAL JOIN orderitems NATURAL JOIN books GROUP BY customer#;
  3. SELECT order#, TO_CHAR(SUM(retail),'999.99') FROM orderitems JOIN books USING (isbn) GROUP BY order#;
  4. SELECT title, VARIANCE(retail-cost) FROM books GROUP BY pubid;

答案:D . GROUP BY 子句必须指定 SELECT 子句中包含的一列或一组列。这里的 PUBID 不包含在 SELECT 子句中,因此查询无效。

84.关于群函数的嵌套,下列哪些说法是正确的?

  1. 首先解析最内部的函数。
  2. Oracle 允许最多 3 级嵌套组函数。
  3. 单行函数可以与组函数嵌套。
  4. Oracle 允许最多 2 级嵌套组函数。

答案:A、C、D。在包含嵌套函数的表达式中,最里面的函数首先被执行,其结果被送入下一个向外移动的函数。单行函数可以很好地与最多嵌套 2 层的组函数一起使用。

85. Oracle 中的统计分组函数有哪些?

  1. 平均收入
  2. 标准差错
  3. 方差
  4. 统计数据

答案:B、 C。VARIANCE 和STATS 是Oracle SQL 中可用的统计组函数。

86.如果SELECT列表包含一个列和一个组函数,以下哪个子句必须被包含?

  1. 订购者
  2. 通过…分组
  3. 都不是

答案:C. GROUP BY 子句必须包含 SELECT 子句中包含的列或列集。

87. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

关于为什么此 SQL 语句不会执行的最佳解释是什么?

SELECT department_id "Department", AVG (salary)"Average"
FROM employees
GROUP BY Department;
  1. 工资不能平均,因为并非所有数字都会平均分配。
  2. 您不能在 GROUP BY 子句中使用列别名。
  3. GROUP BY 子句必须有 GROUP 的东西。
  4. 部门 ID 未列在部门表中。

答案:B. GROUP BY 子句和 HAVING 子句都不适用于列别名。

88. 以下哪些数据类型与 AVG、SUM、VARIANCE 和 STDDEV 函数兼容?

  1. 仅数字数据类型
  2. 仅整数
  3. 任何数据类型
  4. 除数字外的所有

答案: A.函数 AVG、SUM、VARIANCE 和 STDDEV 强制仅适用于数字数据类型。

检查下面给出的表格结构,并回答后面的问题 89 和 90。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

89. 以下哪个查询将显示每个部门工作的不同职位类别的数量?

  1. SELECT department_id , COUNT(DISTINCT job) FROM employees  GROUP BY job;
  2. SELECT department_id , COUNT(job) FROM employees  GROUP BY employee_id ;
  3. SELECT department_id , COUNT(job) FROM employees  GROUP BY department_id ;
  4. SELECT department_id , COUNT(DISTINCT job) FROM employees  GROUP BY department_id ;

答案:D.使用 DISTINCT 修饰符过滤掉重复项。

90. 评估这个 SQL 语句:

SELECT employee_id , first_name , department_id , SUM(salary )
FROM employees 
WHERE salary  > 1000
GROUP BY department_id , employee_id , first_name 
ORDER BY hiredate;

为什么这个语句会导致错误?

  1. 缺少 HAVING 子句。
  2. WHERE 子句包含语法错误。
  3. SALARY 列不包含在 GROUP BY 子句中。
  4. HIRE_DATE 列不包含在 GROUP BY 子句中。

答案:D . SELECT 和 ORDER BY 子句中出现的所有列都必须包含在 GROUP BY 子句中。

91. 下列关于 GROUP BY 子句的说法正确的是?

  1. 要在使用 GROUP BY 子句将它们分组之前排除行,您应该使用 WHERE 子句。
  2. 您必须将 HAVING 子句与 GROUP BY 子句一起使用。
  3. 列别名可以在 GROUP BY 子句中使用。
  4. 默认情况下,使用 GROUP BY 子句时不会对行进行排序。

答案: A.使用 WHERE 子句,您可以在将行分组之前排除行。

92. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

解释以下查询的结果。

SELECT department_id , MIN (hiredate)
FROM employees 
GROUP by department_id ;
  1. 组织中最早的雇用日期。
  2. 组织中的最新雇用日期。
  3. 部门中最早的雇用日期。
  4. 部门的最新雇用日期。

答案:C。查询返回各部门最早录用的员工。

93.关于群函数的说法正确的是?

  1. 除 COUNT(*) 之外的组函数,忽略空值。
  2. 在 SELECT 列表中包含组函数的查询必须包含 GROUP BY 子句。
  3. 组函数可以在 WHERE 子句中使用。
  4. 组函数只能在 SELECT 列表中使用。

答案: A.除 COUNT(*) 之外的所有组函数都忽略 NULL 值。这是因为它们处理直接包含在特定列中的值。

94. 以下哪些条款代表了群函数的有效使用?

  1. GROUP BY MAX(薪水)
  2. ORDER BY AVG(薪水)
  3. 拥有 MAX(salary) > 10000
  4. SELECT AVG(NVL(salary, 0))

答案:B、C、D。组函数只能出现在 SELECT、HAVING 和 ORDER BY 子句中。

95. 下列关于 GROUP BY 子句的说法中哪些是正确的?

  1. GROUP BY 子句中列出的最后一列是最主要的分组。
  2. GROUP BY 子句中列出的第一列是最主要的分组。
  3. 没有 ORDER BY 子句就不能使用 GROUP BY 子句。
  4. GROUP BY 子句不确保输出的排序。

答案:B . 数据的分组基于 GROUP BY 子句中出现的列的顺序。

96. WHERE 子句和 HAVING 子句有什么区别?

  1. WHERE 子句在分组前限制行,而 HAVING 子句限制组。
  2. WHERE 子句不能包含组函数,但 HAVING 子句可以包含。
  3. WHERE 子句可以使用 AND 或 OR 运算符连接多个条件,但 HAVING 子句不能。
  4. WHERE 子句可以出现在没有 GROUP BY 子句的 SELECT 查询中,但 HAVING 子句不能。

答案:A、B、 D。WHERE 子句限制分组前的行,但 HAVING 限制组。

97. 检查给定的表结构。

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

预测以下查询的结果。

SELECT department_id ,job,count(*)
FROM employees 
GROUP BY department_id ,job
ORDER BY department_id ,count(*);
  1. 它执行成功。
  2. 它抛出错误,因为 ORDER BY 子句无效。
  3. 它抛出错误,因为 GROUP BY 子句无效。
  4. 它抛出错误,因为 GROUP BY 和 ORDER BY 子句不能一起使用。

答: A. ORDER BY 子句可以使用分组函数进行排序。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁