如何将组策略与计算结合在一起?

时间:2019-09-16 12:44:49

标签: mysql sql group-by

我想规范化一列。 (=除以sum()) 我尝试过:

select @w:=sum(lastprice), lastprice/@w 
from  aktien 
GROUP BY TradeDate;

,但第二选择部分始终为NULL。 如何才能做到这一点 ? 沃尔特

1 个答案:

答案 0 :(得分:1)

您将获得NULL,因为MySQL不保证在SELECT子句中对用户定义的变量进行求值的顺序。另外,您试图实现的是无效的聚合;您将需要首先在单独的子查询(派生表)中计算SUM(),然后将其重新加入以计算归一化值:

SELECT a.TradeDate, 
       a.lastprice, 
       a.lastprice/b.sum_last_price AS normalized_last_price 
FROM aktien AS a 
JOIN (SELECT TradeDate, SUM(lastprice) AS sum_last_price 
      FROM aktien 
      GROUP BY TradeDate) b ON b.TradeDate = a.TradeDate