相当于在SQL中定义局部变量

时间:2012-11-26 08:48:53

标签: sql hive

我有一张表:

id    B       C
a     0.5     10.1
b     0.6     2.3
c     0.9     2.1
d     15.2    8.2

我想计算一个数量,如:“B的标准偏差,B低于平均值。”

我不知道该怎么做。

select ssdev_pop(C) from (select B, C from table where B < avg(B) );

不起作用,我不知道如何一次性访问avg(B)(我知道我可以计算它并将其插入第二个查询但我想避免这种情况。)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

尝试这个,

SELECT stddev_pop(C) 
FROM
(
   SELECT B, C
   FROM   table1
   WHERE  B < (SELECT AVG(B) FROM table1 )
) s

演示:http://www.sqlfiddle.com/#!2/9d570/8