SQL +在同一查询中使用聚合函数结果

时间:2018-01-12 07:43:46

标签: sql hive

我在hive上工作,我需要聚合一些值,并使用这些聚合结果需要派生另一个值。 例如: 销售

Item .  sold_cnt . sold_price
-----------------------------
1         3         9
1         4         12
2         4         20
1         2          6

不,我想编写一个可以汇总每件商品的sold_cnt和sold_price的查询,还可以确定单个商品的成本。

截至目前我正在这样做,但不要认为那是对的。有人可以帮忙吗?

SELECT ITEM, TOTALCNT, TOTALPRICE, (TOTALPRICE/TOTALCNT) AS INDIPRICE 
FROM(
   SELECT ITEM, SUM(SOLD_CNT) AS TOTALCNT, SUM(SOLD_PRICE) AS TOTALPRICE, 
   FROM SALES GROUP BY ITEM
) A GROUP BY 1,2,3

2 个答案:

答案 0 :(得分:2)

我认为你不需要子查询。试试这个

SELECT ITEM, 
      SUM(SOLD_CNT) AS TOTALCNT, 
      SUM(SOLD_PRICE) AS TOTALPRICE, 
      SUM(SOLD_PRICE)/SUM(SOLD_CNT) AS Weighted_average_item_cost
FROM SALES 
GROUP BY ITEM

答案 1 :(得分:1)

或者,如果您仍想使用查询方法,则可以在外部查询中没有GROUP BY的情况下执行此操作。

SELECT A.ITEM, A.TOTALCNT, A.TOTALPRICE, (A.TOTALPRICE/A.TOTALCNT) AS INDIPRICE 
FROM
(
  SELECT ITEM, SUM(SOLD_CNT) AS TOTALCNT, SUM(SOLD_PRICE) AS TOTALPRICE 
  FROM SALES 
  GROUP BY ITEM
) A