Apache Derby 中的 SQL 查询

发布于 2024-11-09 01:52:48 字数 687 浏览 4 评论 0原文

我正在开发一个使用 Apache Derby 数据库的副业项目,但在查询时遇到了问题。我有以下两个表:

    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(pieces)/sum(numMisloads) 。我有以下查询,但收到一条错误消息,指出由于存在聚合,因此所有返回都需要具有有效的聚合。

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

非常困难,任何帮助将不胜感激。

I'm working on a side project with a Apache Derby database and I'm having trouble with a query. I have the following two tables:

    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);

I'm trying to get a query to return sum(pieces)/sum(numMisloads) for a given employee. I have the following query but I get an error saying that since there is an aggregate all the returns need to have a valid aggregate.

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

Pretty stuck, any help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少女净妖师 2024-11-16 01:52:48

在这些情况下我所做的就是在 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; 

What I do in those situations is using FIRST() on lname, because lname is always the same.
It feels like a dirty work-around so I hope somebody comes up with a better solution.

SELECT FIRST(lname), FIRST(fname), (SUM(Record.pieces)/SUM(Record.numMisloads)) 
FROM Employee, Record Where Employee.id = Record.emp_id GROUP BY Employee.id; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文