2010-12-21 42 views
1

我正在一个超过100列的表上工作,其中很多都是布尔值,因为我需要使用avg(variable_name :: int)来取每个布尔列的平均值。如何计算所有列的平均值?

现在,我想同时取所有列的平均值。我怎么做 ?

非常感谢。

我会尽量做得更清楚: 我想要从A到ZZ的所有变量的所有平均值。其中一些是整数,一些是布尔值,这就是我为布尔人所控制的唯一原因。

PK  A **** GZ *** ZZ 
-------------------------- 
1  T **** F *** T 
2  T **** F *** T 
3  F **** T *** T 
4  F **** F *** F 
5  T **** F *** T 
+1

听起来像你应该规范你的数据库。 :-( – 2010-12-21 21:05:08

+0

你能解释一下吗?谢谢;)我想我知道什么是标准化,但我不明白为什么如果我规范化它将解决我的问题。我对此很新。 – joaoavf 2010-12-21 21:06:21

+0

基本上,没有很多合理的理由来创建一个100列以上的表格,这很可能是因为您复制了大量数据,在其他表格中会更好。 Google围绕着“数据库规范化”,“数据建模”等等。 – 2010-12-21 21:20:30

回答

2

有没有真正的偷偷摸摸或棘手的方式来做到这一点。您可能可以使用数据字典构建动态查询,但这并不推荐。

如果你真的需要100个不同列的平均值,你将不得不输入avg() 100次。

但我同意上面的评论,可能你的数据库会从一些标准化中受益匪浅。如果您有一堆名为'Something ##`的列,其中##是一系列数字,那么尤其如此。

2

也许我不明白你的问题。如果你从这样的一个表开始:

 
PK  A 
-------- 
1  T 
2  T 
3  F 
4  F 
5  T 

你希望问什么答案,“什么是列A的平均值?”