2011-05-19 76 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