我试图查找如何使用SQL计算每列的平均值。然而,我能找到的每个示例都显式指定了列,如下所示:
SELECT AVG(column1), AVG(column2), ...
FROM table;
或者它将指定如何跨列聚合结果以形成某种总均值,如下所示:
SELECT (AVG(column1)+AVG(column2)+...)/n_columns
FROM table;
我正在寻找的是一种方法来采取一个表,看起来像这样:
| 栏1|第2栏|第3栏|
| - ------|- ------|- ------|
| 1个|三个|五个|
| 第二章|四个|六个|
并得到如下所示的结果:
| 平均值(第1列)|平均值(第2列)|平均值(第3列)|
| - ------|- ------|- ------|
| 1.5 |三、五|五、五|
从这里开始,我希望能够添加各种分组和连接,所以如果需要使用某种“技巧”来实现这一点,它需要是一个非常可扩展的技巧。
我天真地希望我可以尝试一些像
SELECT AVG(*)
FROM table;
我可能有20%的希望,它可以这么简单,但唉,这不是有效的语法,正如前面提到的,试图寻找答案,我认为是一个相对简单的问题已经证明非常令人恼火。
1条答案
按热度按时间6yt4nkrj1#
你不能这样做,但有一个使用PREPARED STATEMENT的解决方案。
下面是一个例子:
1.为了便于理解,我使用了两个独立的变量:
1.首先使用
information_schema.columns
表生成列:1.然后使用
@columns
变量中生成列创建查询:1.最后,准备,执行,然后释放语句:
您还可以使用如下所示的单一语法创建最终查询:
Demo fiddle