mysql - 如何将组声明与计算结合起来?

标签 mysql sql group-by

我想标准化一列。 (= 除以 sum()) 我试过这个:

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

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

最佳答案

您将得到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

关于mysql - 如何将组声明与计算结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957175/

相关文章:

Mysql 重启复制主/从

mysql - 在 CakePHP 表单中自动填充来自另一个 Controller 的 ID

sql - 按最后一个关系或无关系选择

mysql - 如何向 GROUP BY 的结果添加一个额外的列,其值与条件匹配?

mysql - 在 mysql 中有更好的方法吗? - 用另一个选择和分组更新整个列

php - where 和 or_where codeigniter ajax 数据表搜索不适用于(2 where)

mysql - 如何设置MySQL查询中元素匹配的优先级?

sql - 根据日期求和/聚合数据

sql - 添加一个表示其他两个Varchar列的串联的列

mysql - 使用聚合函数为每个数据选择一行