首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql数学公式误差

postgresql数学公式误差
EN

Stack Overflow用户
提问于 2015-06-16 11:09:08
回答 2查看 36关注 0票数 0

嗨,我试图在postgresql中的每一行上使用一个数学函数。但它给了我一个错误。

我的问题是:

代码语言:javascript
复制
Select
  stock_inventory_line.product_code AS Sku,
  COUNT(sale_order_line.name) AS Qty_Sold,
  stock_inventory_line.product_qty AS Current_Qty,
  (stock_inventory_line.product_qty / Qty_Sold) AS NOM
From
  sale_order_line,
  product_product,
  product_template,
  product_category,
  stock_inventory_line
WHERE
  sale_order_line.product_id = product_product.id AND
  product_product.product_tmpl_id = product_template.id AND
  product_template.categ_id = product_category.id AND
  product_product.default_code = stock_inventory_line.product_code
GROUP BY
  Sku,
  Current_Qty,
  NOM;

在这个查询中,它给出了一个错误:列qty_sold不存在。如果我将第5行改为

代码语言:javascript
复制
(stock_inventory_line.product_qty / COUNT(sale_order_line.name)) AS NOM

它给了我一个错误:聚合函数不允许在组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-16 11:16:12

您正在尝试按项目使用计数(sale_order_line.name)作为一个组。Aggreagte函数用于分组项目。他们不是用来分组的。

我不知道你的桌子,但试试看

代码语言:javascript
复制
Select
  stock_inventory_line.product_code AS Sku,
  COUNT(sale_order_line.name) AS Qty_Sold,
  stock_inventory_line.product_qty AS Current_Qty,
  (stock_inventory_line.product_qty / COUNT(sale_order_line.name)) AS NOM
From
  sale_order_line,
  product_product,
  product_template,
  product_category,
  stock_inventory_line
WHERE
  sale_order_line.product_id = product_product.id AND
  product_product.product_tmpl_id = product_template.id AND
  product_template.categ_id = product_category.id AND
  product_product.default_code = stock_inventory_line.product_code
GROUP BY
  stock_inventory_line.product_code,
  stock_inventory_line.product_qty;

基本上我把诺姆从小组里删除了。它是每一组的产品,而不是你分组的东西。

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 20:59:27

我经常遇到这样的问题。使用CTE总是对我有用的。在CTE中进行聚合,然后在外部语句中调用它们时,Postgres将它们视为数值而不是聚合。您的查询也可能运行得更快一些!

示例:

代码语言:javascript
复制
WITH cte AS( 
  SELECT
  sale_order_line.product_id,
  stock_inventory_line.product_code,
  stock_inventory_line.product_code AS Sku,
  COUNT(sale_order_line.name) AS Qty_Sold,
  stock_inventory_line.product_qty AS Current_Qty,
  (stock_inventory_line.product_qty / Qty_Sold) AS NOM
  FROM
  sale_order_line,
  stock_inventory_line)

SELECT Sku, Qty_Sold, Current_Qty, NOM
FROM 
cte,
product_product,
product_template,
product_category

WHERE
  cte.product_id = product_product.id AND
  product_product.product_tmpl_id = product_template.id AND
  product_template.categ_id = product_category.id AND
  product_product.default_code = cte.product_code
GROUP BY
  Sku,
  Current_Qty,
  NOM;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30865919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档