2011-05-19 24 views
1

私はApache Derbyデータベースを使用してサイドプロジェクトを作成していますが、クエリに問題があります。私は、次の2つの表があります。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); 

私は与えられた従業員の合計(個)/ SUM(numMisloads)を返すようにクエリを取得しようとしています。私は次のクエリを持っていますが、集計があるので、すべての戻り値が有効な集計を持つ必要があるというエラーが表示されます。

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

かなり頑張って、どんな助けもありがとうございます。

+0

あなたが外にLNAMEとfnameのを取る場合varname' – Tomas

答えて

1

lnameは常に同じなので、これらの状況では、lnameにFIRST()を使用しています。 汚い回避策のように感じるので、誰かがより良い解決策を考えてくれることを願っています。

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

+0

してグループをやっていないと思う(SUM(Record.pieces)/ SUM(Record.numMisloads)) 'を使用してみてくださいクエリ、それは望ましい結果を返しますか?はいの場合は、正しく使用しています。 – Jacob

+0

lnameとfname hmmmを取り出すと、実際には望ましい結果が得られます。 – Ben

関連する問題