要创建一个报表,这个报表将显示那些信用限额大于所有客户平均信用限额的客户,应使用如下的哪个查询语句
A.SELECT
last_name, first_name
FROM
customer
WHERE
credit_limit>AVG(credit_limit);
B.SELECT
last_name, first_name, AVG(credit_limit)
FROM
customer
GROUP BY AVG(credit_limit);
C.SELECT
last_name, firs_name, AVG(credit_limit)
FROM
customer
GROUP BY AVG(credit_limit)
HAVING
credit_limit>AVG(credit_limit);
D.SELECT
last_name, first_name
FROM
customer
WHERE
credit_limit>(SELECT AVG(credit_limit)
FROM
customer);
E.SELECT
last_name, first_name
FROM
customer
WHERE
credit_limit=(SELECT AVG(credit_limit)
FROM
customer);
参考答案:D
解析: 这一题是测试对单行子查询的熟悉程度和对分组操作的理解。因为在WHERE子句中不允许使用分组函数,所以选项A的SQL语句会返回语法错误,因此选项A可以排除。如果在一个SQL语句中使用了分组函数,在SQL语句中的每一列要么在分组函数中,要么在GROUP BY子句中的规则,选项B和C都是错误的。
虽然选项D和E的语法都是正确的,但是根据题目的要求——显示那些信用限额大于所有客户平均信用限额的客户,选项E肯定是错误的,因为它的WHERE子句中使用的是“=”。而选项D的WHERE子句中使用的是“ >”运算符,所以只有选项D是正确的。