2011-05-19 69 views
1

我正在使用Apache Derby数据库处理一个侧项目,并且遇到查询问题。我有以下两个表:Apache Derby中的SQL查询

create table Employee(
    ID VARCHAR(7) not null, 
    lname VARCHAR(30) NOT NULL, 
    fname VARCHAR(30) NOT NULL, 
    avgPieces int, 
    PRIMARY KEY(ID)); 

    create table Record(
    emp_id VARCHAR(7) references Employee(ID), 
    day DATE NOT NULL, 
    pieces int NOT NULL, 
    numMisloads int); 

我试图让一个查询返回总和(件)/总和(numMisloads)对于一个给定的雇员。我有以下查询,但我得到一个错误说,因为有一个聚合所有返回需要有一个有效的聚合。

SELECT lname, fname, (SUM(Record.pieces)/SUM(Record.numMisloads)) 
FROM Employee, Record Where Employee.id = Record.emp_id GROUP BY Employee.id; 

漂亮的卡住了,任何帮助将不胜感激。

+0

尝试使用'(SUM(Record.pieces)/ SUM(Record.numMisloads))AS varname' – Tomas 2011-05-19 09:04:58

回答

1

我在这些情况下做的是在lname上使用FIRST(),因为lname总是相同的。 这感觉像一个肮脏的解决方法,所以我希望有人提出一个更好的解决方案。

SELECT FIRST(lname), FIRST(fname), (SUM(Record.pieces)/SUM(Record.numMisloads)) 
FROM Employee, Record Where Employee.id = Record.emp_id GROUP BY Employee.id; 
+0

我想我没有被正确 – Ben 2011-05-19 09:00:32

+0

从事群体如果你把L-NAME和FNAME出来的查询,它是否会返回所需的结果?如果是,那么你正确使用它。 – Jacob 2011-05-19 09:03:47

+0

它确实给我想要的结果,如果我拿出lname和fname嗯...... – Ben 2011-05-19 09:09:12