所以我在我的数据库中有相当广泛的视图。我有几个表生成的以下虚拟视图。 SELECT * FROM view_name;
产生如下:从视图中选择所有字段的所有平均值,而不指定字段名称
field1 field2 field3 field4 field5
---------- ---------- ---------- ---------- ----------
1 4 7 10 15
2 5 8 11 14
3 6 9 12 13
为了得到它们的平均值我必须每场我想从普通的名字:
SELECT avg(field1), avg(field2), avg(field3), avg(field4), avg(field5) FROM view_name;
其产生的结果是:
avg(field1) avg(field2) avg(field3) avg(field4) avg(field5)
----------- ----------- ----------- ----------- -----------
2.0 5.0 8.0 11.0 14.0
由于类似报告的目的,某些实际使用案例的视图范围为20-25个字段,并且会使写入查询成为m如果我不需要指定每个列的平均值,那么更容易,我想知道是否有任何解决方法? 我使用的数据库是sqlite和mariadb,因此任何适用于它们的解决方案都是可以接受的。
总之,我寻找一种方法来指定我想获得所有字段的所有平均值而不指定字段名称,就像SELECT *
工作并返回它们就像上面的查询。违反语法模拟将
SELECT * FROM view_name
和SELECT AVG(*) FROM view_name
如果你想使用我创建的虚拟视图,您可以使用一个虚表来模拟它(实际的看法,如前所述,是多少宽于该表中):
CREATE table dummy (
field1 int,
field2 int,
field3 int,
field4 int,
field5 int
);
INSERT INTO dummy VALUES (1,4,7,10,15);
INSERT INTO dummy VALUES (2,5,8,11,14);
INSERT INTO dummy VALUES (3,6,9,12,13);