嗨,我需要在较大的脚本中执行以下操作:

SELECT
GROUP_CONCAT(DISTINCT
CONCAT('(SUM(CASE WHEN ColumnA = "'  ,ColumnA, ' "THEN 1 ELSE 0 end))/(select total
   from hd_totals where ColumnA = "'  ,ColumnA, ' ") AS "'  ,ColumnA, ' "'))
FROM table inner join.....


问题是我无法执行/操作,因为即使选择输出是单个值,它也会给出错误。
我什至不知道如何使用别名或如何将其存储在变量中,因为这是我在此处创建的(对我而言)相当复杂的环境...

最佳答案

怎么样:使用CAST具有DECIMAL类型,并使用合并防止空值?

SELECT
GROUP_CONCAT(DISTINCT
CONCAT('COALESCE(CAST((SUM(CASE WHEN ColumnA = "'  ,ColumnA, ' "THEN 1 ELSE 0 end)) AS DECIMAL(10,4)),0)/COALESCE(CAST((select total
   from hd_totals where ColumnA = "'  ,ColumnA, ' ") AS DECIMAL(10,4)),0.01) AS "'  ,ColumnA, ' "'))
FROM table inner join.....


注意:有一个任意常数0.01可以防止被0除。

更重要的注意事项:如果我是您,我还将添加一个CASE WHEN来检查您是否被0除。

关于mysql - SQL选择结果之间的算术运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31292602/

10-11 02:57