【问题标题】:SQL statement with group by - list of passengers带分组依据的 SQL 语句 - 乘客列表
【发布时间】:2020-05-25 05:48:50
【问题描述】:

通过以下语句,我试图选择包含行李总重量的乘客列表。我不断收到此错误 ORA-00979: not a GROUP BY expression [SQL State=42000, DB Errorcode=979]。如果我在 select 子句中添加所有表达式,我会消除错误,但是如果乘客不止一件行李,该语句会多次列出乘客。

知道如何解决吗?谢谢。

select f.flugnummer, p.nachname, pl.sitzplatznummer, l.bezeichnung, r.reisepassnr, sum(g.gewicht) as Luggage
from passagierliste pl join flug f on f.flugID = pl.flugID
    join gepaeck g on pl.personID = g.personID
    join person p on pl.personID = p.personID
    join reisepass r on p.personID = r.personID
    join land l on r.landID = l.landID
    group by nachname;

【问题讨论】:

  • select 中有无数个未聚合的列。从select 中删除它们或将它们添加到group by

标签: sql oracle group-by


【解决方案1】:

使用下面的查询,

select f.flugnummer, p.nachname, pl.sitzplatznummer, l.bezeichnung, r.reisepassnr, 
sum(g.gewicht) as Luggage
from passagierliste pl join flug f on f.flugID = pl.flugID
join gepaeck g on pl.personID = g.personID
join person p on pl.personID = p.personID
join reisepass r on p.personID = r.personID
join land l on r.landID = l.landID
group by f.flugnummer, p.nachname, pl.sitzplatznummer, l.bezeichnung, r.reisepassnr;

无论何时进行聚合,您都必须使用您在分组依据中选择的所有列

【讨论】:

  • 在此处发帖的提示:(a) 换行符很少需要,当然也不应该在每篇文章的顶部添加; (b) 请不要添加称呼、问候、感谢和签名 - Stack Overflow 不是聊天室; (c) 对您的作品进行拼写检查,大多数浏览器的编辑器中都有英文拼写检查器; (d) 使用适当的标点符号。请记住,您的工作不仅是为问题的作者写的,而且是为多年后的读者写的。
  • @halfer,感谢您的友好解释。将按照您的建议进一步。
猜你喜欢
  • 2010-11-28
  • 2012-05-18
  • 1970-01-01
  • 2013-05-13
  • 2010-09-06
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多