MySQL临时表

时间:2014-04-21 07:40:16

标签: php mysql temp-tables

在我正在工作的项目中,我使用 php 语言和 mysql 数据库。

我认为使用临时表的原因是正确的,因为我执行了很多计算,而在javascript中他们会花费我很长时间。

我必须在屏幕上显示这些表格:

表1:

Total data.         |   6
Average.            |   2984-99
Sum x-Media.        |   5088.9
Sum (x-Media)^2.    |   138092659.8396
Sum (x-Media)^4.    |   1.09E+16
Maximum value.      |   9812.12
Minimum value.      |   18.23

表2:

Amount  |   x-Media     |   (x-Media)^2     |   (x-Media)^4
839.12  |   -2145.87    |   704122.3744     |   495788318130.694
18.23   |   18.23       |   332.3329        |   110445.15642241
9812.12 |   11957.99    |   96277698.8944   |   9.27E+15
23.93   |   5.7         |   572.6449        |   327922.18149601
863.21  |   -11094.78   |   745131.5041     |   555220958402.328
6353.33 |   6347.63     |   40364802.0889   |   1.63E+15

所有计算均基于金额列,即此值。我从表tbl_layout_c得到它:

Amount decimal (18,2)
----------
839.12
18.23
9812.12
23.93
863.21
6353.33

所以查询是:

1 SELECT amount 
2 (SELECT COUNT(*) FROM tbl_layout_c ) AS total_data
3 (SELECT SUM(amount) FROM tbl_layout_c ) AS total_sum,
4 (SELECT total_sum / total_data AS average,
5 (SELECT amount - average ) AS x_media,
6 (SELECT SUM(x_media)) AS suma_x_media
7 FROM tbl_layout_c

问题出在第6行:( SELECT SUM(x_media))AS suma_x_media     因为我获得与x_media列相同的值。例如:

Amount      |   x-Media         |   Sum x-Media.
839.12      |   -2145.87        |   -2145.87

我需要:

Amount      |   x-Media         |   Sum x-Media.
839.12      |   -2145.87        |   5088.9

当我尝试在临时表的临时列(suma_x_media)中使用函数sum()时,我遇到了麻烦。它不起作用,我得到与x_media相同的值

任何人都知道我缺少什么?

Here you can see an example of the Code

1 个答案:

答案 0 :(得分:0)

试试这个

select *,sum(x_media) from (SELECT monto, #obtengo el campo monto
(SELECT COUNT(*) FROM tbl_layout_c ) AS total_datos, #contar los registros
(SELECT SUM(monto) FROM tbl_layout_c ) AS suma_total, #suma total
(SELECT MAX(monto) FROM tbl_layout_c ) AS valor_maximo, #valor maximo
(SELECT MIN(monto) FROM tbl_layout_c ) AS valor_minimo, #valor minimo
(SELECT suma_total / total_datos) AS promedio, #promedio
(SELECT monto - promedio) AS x_media #media artimetica
FROM tbl_layout_c)tablealias

我在sql中尝试了你的数据并且它有效。您的总和(x_media)为0,sql中的数据如果您更改表2中的数据,那么您可以得到表1中提到的预期输出。