OCP 1z0-071 79题(第一版)

OCP 1z0-071 79题(第一版)

Oracle Database 12c SQL
Version 2.0
时间:2019/6/16

QUESTION 79
Which three statements are true regarding the SQL WHERE and HAVING clauses?
A. The HAVING clause conditions can have aggregating functions.
B. The HAVING clause conditions can use aliases for the columns.
C. The WHERE and HAVING clauses cannot be used together in a SQL statement.
D. The WHERE clause is used to exclude rows before grouping data.
E. The HAVING clause is used to exclude one or more aggregated results after grouping data.

Correct Answer: ADE

aggregating :v. 聚集;合计(aggregate 的现在分词)

aliases :n. 别名(alias的复数)

exclude :vt. 排除;排斥;拒绝接纳;逐出

翻译:
问题79
关于WHERE和HAVING子句,哪三个语句是正确的?
A.HAVING子句条件中可以使用聚合函数。
B.HAVING子句条件中可以使用列别名。
C.WHERE和HAVING子句不能在SQL语句中一起使用。
D.WHERE子句用于在数据分组之前排除行。
E.HAVING子句用于排除分组数据后的一个或多个聚合结果。

正确答案:ADE

答案解析:

聚合函数:聚合函数就是基于多行数据返回一行结果,如:AVG、COUNT、MAX、MIN等。(可参考:https://blog.csdn.net/ceclar123/article/details/12394967)

A:正确,例:select deptno from emp group by deptno having min(sal)>5000;这句查询的意思是,从员工(emp)表中查找出最小工资(sal)大于5000的部门,显示部门编号(deptno)

B:错误。这和Oracle中SQL语句各子句的执行顺序有关,简单来说就是from>where>group by>having>select>order by,列别名是在select子句中定义的,having子句执行在select子句前,如果在having中列别名,当然无法识别。(可参考:https://www.cnblogs.com/godtrue/p/3791591.html)

在Oracle数据库中列别名可以使用as定义,而表别名不可以。(可参考:https://www.cnblogs.com/fengzhentian/p/4563938.html)

C:错误。

D:正确。这和Oracle中SQL语句各子句的执行顺序有关。

E:正确。

上一篇:仍然对MySQL中的子查询和子查询感到困惑


下一篇:Oracle中的having()函数