SQL 所有列中大于某个数的数据的平均值
需要求每列的平均值起初是直接用AVG但是里面有些没用的数据需要摒弃掉有没有什么简单点的方法?(列很多)比如说求没列>0的数据的平均值期望跟直接selectAVG(..)f...
需要求每列的平均值 起初是直接用AVG 但是里面有些没用的数据需要摒弃掉 有没有什么简单点的方法?(列很多)
比如说 求没列>0的数据的平均值 期望跟直接select AVG(..) from 表1的结构差不多
A B C D E F G
13 10 0 7 6 12 18
24 0 7 9 11 10 5
0 10 0 14 4 9 8
17 19 10 0 3 2 0
31 50 9 1 0 2 11 展开
比如说 求没列>0的数据的平均值 期望跟直接select AVG(..) from 表1的结构差不多
A B C D E F G
13 10 0 7 6 12 18
24 0 7 9 11 10 5
0 10 0 14 4 9 8
17 19 10 0 3 2 0
31 50 9 1 0 2 11 展开
4个回答
2013-03-06
展开全部
你是要求 A B C D E F G 全部都 大于 0 的 AVG 么?
SELECT
AVG(A) AS A ,
...... 一堆 AVG 我就省略了 关键在 WHERE
FROM
表
WHERE
LEAST ( A , B , C , D , E , F , G ) > 0;
注:
LEAST 函数, 是获取一堆参数里面, 最小的那一个。
例如:
SQL> SELECT
2 LEAST(1,3,5,7,9) A
3 FROM
4 dual;
A
----------
1
SQL> select least('aa', 'bb', 'cc') A
2 from dual;
A
--
Aa
GREATEST 是取最大。
SQL> SELECT
2 GREATEST(1,3,5,7,9) A
3 FROM
4 dual;
A
----------
9
SQL> select greatest('aa', 'bb', 'cc') A
2 from dual;
A
--
cc
SELECT
AVG(A) AS A ,
...... 一堆 AVG 我就省略了 关键在 WHERE
FROM
表
WHERE
LEAST ( A , B , C , D , E , F , G ) > 0;
注:
LEAST 函数, 是获取一堆参数里面, 最小的那一个。
例如:
SQL> SELECT
2 LEAST(1,3,5,7,9) A
3 FROM
4 dual;
A
----------
1
SQL> select least('aa', 'bb', 'cc') A
2 from dual;
A
--
Aa
GREATEST 是取最大。
SQL> SELECT
2 GREATEST(1,3,5,7,9) A
3 FROM
4 dual;
A
----------
9
SQL> select greatest('aa', 'bb', 'cc') A
2 from dual;
A
--
cc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select avg(A)
from tab
where a>0 and b>0 ... and g>0
是这样吗
from tab
where a>0 and b>0 ... and g>0
是这样吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select sum(A*1.0)/sum(case a>0 then 1 else 0 end) as A from tb
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像只能一列一列的求吧,AVG必须配上group by
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询