我正在尝试使用嵌套聚合函数。 我的查询
SELECT
sale_order.client_order_ref AS CHANNEL,
product_category.name AS BRAND,
COUNT(sale_order_line.name) AS QTY_SOLD,
SUM(sale_order.amount_total) AS SELLING_COST,
SUM(COUNT(sale_order_line.name) * 4.5) AS PACK_COST,
SUM(COUNT(sale_order_line.name) * 30.5) AS EKO_COMM
FROM
public.sale_order,
public.sale_order_line,
public.product_template,
public.product_product,
public.product_category
WHERE
sale_order_line.order_id = sale_order.id AND
sale_order_line.product_id = product_product.id AND
product_template.categ_id = product_category.id AND
product_product.product_tmpl_id = product_template.id AND
product_product.default_code = sku_cost.product_code AND
TO_CHAR(sale_order.date_order, 'MON YYYY') = 'JUN 2015'
GROUP BY
CHANNEL,
BRAND
ORDER BY
CHANNEL,
BRAND
如何嵌套和计算? 我试图使用子查询,但没有工作。
答案 0 :(得分:1)
您执行嵌套查询而不是聚合:
SELECT CHANNEL ,
BRAND ,
QTY_SOLD ,
SELLING_COST ,
SUM(PACK_COST) AS PACK_COST ,
SUM(EKO_COMM) AS EKO_COMM
FROM ( SELECT sale_order.client_order_ref AS CHANNEL ,
product_category.name AS BRAND ,
COUNT(sale_order_line.name) AS QTY_SOLD ,
SUM(sale_order.amount_total) AS SELLING_COST ,
COUNT(sale_order_line.name) * 4.5 AS PACK_COST ,
COUNT(sale_order_line.name) * 30.5 AS EKO_COMM
FROM public.sale_order ,
public.sale_order_line ,
public.product_template ,
public.product_product ,
public.product_category
WHERE sale_order_line.order_id = sale_order.id
AND sale_order_line.product_id = product_product.id
AND product_template.categ_id = product_category.id
AND product_product.product_tmpl_id = product_template.id
AND product_product.default_code = sku_cost.product_code
AND TO_CHAR(sale_order.date_order, 'MON YYYY') = 'JUN 2015'
GROUP BY CHANNEL ,
BRAND
) t
GROUP BY CHANNEL ,
BRAND ,
QTY_SOLD ,
SELLING_COST