gpt4 book ai didi

MySQL : sum per group and overall

转载 作者:行者123 更新时间:2023-11-29 13:27:11 27 4
gpt4 key购买 nike

对于一个项目,我有一个聚合数据的查询:

SELECT
code,
SUM(someValue) as summedValueForCode
FROM
someTable
GROUP BY
code;

现在,我需要的是第三列,它定义 summedValueForCode 在所有行中表示的百分比。所以 summedValueForCode/summedValueForAllRows。

我可以做这样的事情:

SELECT
code,
SUM(someValue) as summedValueForCode,
(100 * SUM(someValue) / (SELECT sum(someValue) FROM someTable)) as valueForCodeToTotal
FROM
someTable
GROUP BY
code;

但是看起来不太优雅。

另一种选择是:

SELECT
code,
SUM(someValue) as summedValueForCode,
(100 * SUM(someValue) / totalSum) as valueForCodeToTotal
FROM
someTable,
(SELECT sum(someValue) as totalSum FROM someTable) as summedTable
GROUP BY
code;

但是,由于真正的查询相当复杂,我不喜欢第二次添加这样的查询。

有没有办法使用聚合函数来计算忽略 GROUP 的所有行的总和?

最佳答案

MySQL中没有这样的解析函数。您必须自行处理子查询。

您可以编写一个 UDF 来帮助您解决该问题,但这会更加复杂。您必须进行一些 C/C++ 编程。

查看http://dev.mysql.com/doc/refman/5.1/en/adding-udf.html

不要尝试直接在 MySQL 中实现函数。它会慢得要命。如果您创建一个函数,它必须是一个 UDF 插件。

关于MySQL : sum per group and overall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com