MySQL 汇总 : Wrong total for one column calculated by a formula

标签 mysql

在下面的查询中,其中一个汇总总和具有引用其他列的公式。在这种情况下,MySQL 似乎甚至在汇总行中也使用了公式,而不是对列值求和。

nErtek似乎是使用总计行中的字段计算的,即(462.053-479.710+0)*2700,结果是-47673.9对列值求和,结果为 61632-75232-12214-21744-3945+4079-43697+13500 = -77621

我做错了什么?

mysql> SELECT k.nValasztekKey as nValasztekKey, k.nErdoKey as nErdoKey, concat(v.sFafaj, ' ', v.sVNev) as sValasztek, concat_ws(' ', e.sFalu, e.sErdoResz, r.sName) as sErdoRaktar, k.nHossz as nHossz, elk.nM3Ar, sum(fKiterm) as fKiterm,sum(fElad) as fElad, sum(fVasar) as fVasar, sum(fKiterm)+sum(fVasar)-sum(fElad) as fKeszlet,(sum (fKiterm)+sum(fVasar)-sum(fElad))*elk.nM3Ar as nErtek
FROM keszlet as k
left join elokalk as elk on (k.nValasztekKey=elk.nValasztekKey and k.nErdoKey=elk.nKey)
left join valasztekok as v on (k.nValasztekKey=v.nKey)
left join erdok as e on (k.nErdoKey=e.nKey) 
left join raktarak as r on (k.nErdoKey-1000000=r.nKey) 
WHERE nErdoKey =2 
GROUP BY k.nErdoKey, k.nValasztekKey, k.nHossz 
WITH ROLLUP;


+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+
| nValasztekKey | nErdoKey | sValasztek             | sErdoRaktar | nHossz | nm3Ar | fKiterm | fElad   | fVasar | fKeszlet | nErtek      |
+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+
|            14 |        2 | Nyár Hámozási rönk     | Laskod 57/H |    260 | 10700 | 101.480 |  95.720 |  0.000 |    5.760 |  61632.0000 |
|            14 |        2 | Nyár Hámozási rönk     | Laskod 57/H |   NULL | 10700 | 101.480 |  95.720 |  0.000 |    5.760 |  61632.0000 |
|            15 |        2 | Nyár Belföldi rönk     | Laskod 57/H |    250 |  7200 | 133.123 | 143.572 |  0.000 |  -10.449 | -75232.8000 |
|            15 |        2 | Nyár Belföldi rönk     | Laskod 57/H |   NULL |  7200 | 133.123 | 143.572 |  0.000 |  -10.449 | -75232.8000 |
|            16 |        2 | Nyár Kivágás           | Laskod 57/H |    120 |  6200 |  39.830 |  41.800 |  0.000 |   -1.970 | -12214.0000 |
|            16 |        2 | Nyár Kivágás           | Laskod 57/H |   NULL |  6200 |  39.830 |  41.800 |  0.000 |   -1.970 | -12214.0000 |
|            18 |        2 | Nyár Forgácsfa         | Laskod 57/H |    100 |  2400 |  18.940 |  28.000 |  0.000 |   -9.060 | -21744.0000 |
|            18 |        2 | Nyár Forgácsfa         | Laskod 57/H |   NULL |  2400 |  18.940 |  28.000 |  0.000 |   -9.060 | -21744.0000 |
|            22 |        2 | Fenyö Rönk             | Laskod 57/H |    250 |  7200 |  14.852 |  15.400 |  0.000 |   -0.548 |  -3945.6000 |
|            22 |        2 | Fenyö Rönk             | Laskod 57/H |   NULL |  7200 |  14.852 |  15.400 |  0.000 |   -0.548 |  -3945.6000 |
|            24 |        2 | Fenyö Kivágás          | Laskod 57/H |     80 |  6200 |  10.758 |  10.100 |  0.000 |    0.658 |   4079.6000 |
|            24 |        2 | Fenyö Kivágás          | Laskod 57/H |    120 |  6200 |  81.070 |  88.118 |  0.000 |   -7.048 | -43697.6000 |
|            24 |        2 | Fenyö Kivágás          | Laskod 57/H |   NULL |  6200 |  91.828 |  98.218 |  0.000 |   -6.390 | -39618.0000 |
|            26 |        2 | Fenyö Forgácsfa        | Laskod 57/H |    100 |  2700 |  62.000 |  57.000 |  0.000 |    5.000 |  13500.0000 |
|            26 |        2 | Fenyö Forgácsfa        | Laskod 57/H |   NULL |  2700 |  62.000 |  57.000 |  0.000 |    5.000 |  13500.0000 |
|          NULL |        2 | Fenyö Forgácsfa        | Laskod 57/H |   NULL |  2700 | 462.053 | 479.710 |  0.000 |  -17.657 | -47673.9000 |
|          NULL |     NULL | Fenyö Forgácsfa        | Laskod 57/H |   NULL |  2700 | 462.053 | 479.710 |  0.000 |  -17.657 | -47673.9000 |
+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+

最佳答案

找到了。该字段的正确公式为 sum((fKiterm+fVasar-fElad)*elk.nM3Ar) as nErtek

关于MySQL 汇总 : Wrong total for one column calculated by a formula,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401803/

相关文章:

mysql - 在连接表上添加默认值

mysql - MySQL中如果日期是X,如何避免插入数据?

mysql - 更新 MySQL 中相关列的列中的增量值

mysql - 如何通过 id 列表(包括重复的 id)获取行?

php - 通过我的代码创建/更新/删除还是在数据库中手动操作?

mysql - GROUP BY MySQL 中的一列,但仅来自另一列的唯一组

Mysql - 想知道如何扩展类似 twitter 的应用程序吗?

mysql - 根据引用表对数据进行分组

mysql - 合并并更新sql中的表

php - 在 PHP 中从 MySQL 存储过程获取输出值和记录集