【发布时间】:2015-08-02 00:06:44
【问题描述】:
我正在尝试找到一种方法来输出 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。
【问题讨论】:
-
您可以做的是将列 stddev_age、stddev_weight 等添加到您的查询中,每行都是相同的,所以如果您查看结果中的任何行,如果您想要。可能很难看,但与数据类型没有冲突,而且很容易做到。