2015-10-28 131 views
0

所以,我有以下Oracle SQL数据库表:ORACLE SQL查询 - AVG

create table Customer 
(customerID char(25) not null, 
name char(50), 
address char(100), 
dateRegistered DATE, 
noOfDvdHiring int, 
primary key (customerID)); 

而且我有以下查询:列出谁是比一般的雇佣更多的DVD所有客户的唯一号码和名字的DVD目前由所有客户雇用。

我敢肯定,这应该涉及嵌套查询,但我不确定从哪里开始?

我曾尝试:

SELECT customerID, name 
FROM Customer 
WHERE noOfDvdHire > AVG(noOfDvdHire); 

但收到此错误信息:ORA-00934:组函数是不是在这里

回答

0

允许试试这个

SELECT customerID, name 
FROM Customer 
WHERE noOfDvdHiring > (select AVG(noOfDvdHiring) from customer); 
+0

谢谢,我认为这样可以,但我收到了这个: \t ORA-00904:“NOOFDVDHIRE”:无效的标识符 – Thomas

+0

实际的列名是'noofdvdhiring'。改变了它。 –

+0

如果可能的话,你能否帮助我解决另一个问题? – Thomas

0

2种方式的...区别在于执行计划

select * from (
    select customer_id, noOfDvdHire, avg(noOfDvdHire) over() avgg from Customer 
) where noOfDvdHire > avgg 

select customer_id, noOfDvdHire from Customer 
    where noOfDvdHire > (select AVG(noOfDvdHire) from customer); 
+0

谢谢你,对于我得到以下错误的方法: \t ORA-00904:“NOOFDVDHIRE”:无效标识符 – Thomas