【问题标题】:"Group By" failing - ORACLE“分组依据”失败 - ORACLE
【发布时间】:2014-02-17 18:41:34
【问题描述】:

我发现了十几个与我的问题相似的不同主题,但我没有看到任何可以解决我遇到的问题的主题。我有三个数据库来跟踪客户/销售交易。我可以加入他们并毫无问题地获取我正在寻找的单个交易,但是当我尝试按 vendor_name 对结果进行分组时,我得到“ORA-00979:不是 GROUP BY 表达式”,尽管 vendor_name 是我的列之一正在选择(我认为这是先决条件)。我在这里忽略了一些真正简单的事情吗?

select tran_date,product_name,quantity,
       product_price,vendor_name,quantity*product_price as total  
from transactions
 join products using(product_num) 
  join customers using(vendor_id) group by vendor_name;

【问题讨论】:

  • Group by 用于聚合...您要在这里聚合什么数据?所有列要么是聚合,要么是 group by 语句的一部分。
  • 最大、最小、计数、总和...没有聚合,不需要分组依据。也许你的意思是订购?
  • 更新了你的问题,说明你为什么需要group by 以及你试图通过使用它来完成什么。

标签: sql oracle join group-by


【解决方案1】:

“分组依据”供应商名称意味着您尝试为每个供应商名称获取一条记录。因此,您需要指定其他列的分组/聚合方式。

例如"quantity*product_price",作为一个数字,你需要的部分是

select vendor_name, sum(quantity*product_price)
from transactions
 join products using(product_num) 
  join customers using(vendor_id) 
group by vendor_name;

您问题的完整答案取决于您希望其他列如何针对给定的供应商名称进行分组。

【讨论】:

  • 这确实正是我想要的。我应该意识到,除了要分组的列之外,我请求的其他列必须是某种聚合列。
猜你喜欢
  • 2017-09-21
  • 2011-10-14
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2015-02-04
  • 2021-12-17
相关资源
最近更新 更多