是否可以从MySQL中的查询结果创建计算行?

时间:2015-08-01 15:49:38

标签: mysql sql

我正在尝试找到输出SQL搜索查询的计算行(或两行)的方法,因此我可能会在原始结果列表的上方或下方看到原始结果以及与之关联的计算。例如,我有以下数据:

mysql> select * from data [where condition];
+----+--------+-----+--------+
| id | height | age | weight |
+----+--------+-----+--------+
|  1 |   65.2 |  45 |  45.23 |
|  2 |   63.1 |  47 |      0 |
|  3 |   59.2 |  37 |   38.1 |
|  4 |   59.8 |  39 |   36.4 |
|  5 |   63.4 |  37 |   38.1 |
|  6 |   72.1 |  34 |      2 |
|  7 |    100 |  50 |     20 |
+----+--------+-----+--------+

我想要的是能够执行任何查询以获取此数据的全部或部分,但是生成的表格提供如下内容(摘要/计算输出与原始数据分开,例如在其上方或下方):

mysql> query???
+--------+--------+------+--------+
|   id   | height |  age | weight |
+--------+--------+------+--------+
|      1 |   65.2 |   45 |  45.23 |
|      2 |   63.1 |   47 |      0 |
|      3 |   59.2 |   37 |   38.1 |
|      4 |   59.8 |   39 |   36.4 |
|      5 |   63.4 |   37 |   38.1 |
|      6 |   72.1 |   34 |      2 |
|      7 |    100 |   50 |     20 |
+--------+--------+------+--------+
| STDDEV |  13.26 | 5.57 |  17.15 |
|  COUNT |      7 |    7 |      7 |
|   etc. |   etc. | etc. |   etc. |
+--------+--------+------+--------+

我发现了一些这样的方法(http://www.sqlservercurry.com/2011/06/sql-server-row-summary-column-summary.html)有点做了,但是由于计算对所有行都起作用,它对某些计算不起作用(例如,使用stddev导致“除计算行外的所有内容均为0“。

我可以创建一个单独的计算结果,如下所示,但将它们以某种方式组合起来会很好,如上所示。另外,以下只输出一行计算,并且有几行相关计算会很好。

select stddev(height), stddev(age), stddev(weight) from data [where condition];

这里的要点是执行任何搜索查询并从结果中获得基本描述性信息的自动生成预览(偏差,计数,平均值等)。希望这可以直接在SQL中完成,而无需使用其他语言/ API。

1 个答案:

答案 0 :(得分:3)

将结果与union相结合。如果您需要按特定顺序排列结果,请创建一个包含该列的优先级和顺序的列。

select id, height, age, weight, 0 sortorder 
from data [where condition]
union all
select 'stdev count', stddev(height), stddev(age), stddev(weight), 1
from data [where condition]
order by sortorder