选择属于标准偏差的行

时间:2014-03-02 17:31:55

标签: mysql

这是我的SQL:

SELECT    
    AVG(
      case 
         WHEN  `price` > (avg(`price`) - stddev_pop(`price`)) \
           AND `price` < (avg(`price`) + stddev_pop(`price`))
         THEN `price`
         ELSE NULL
      END)
FROM `history` 
WHERE `history`.`itemID` = 1574 \
      AND `date` > date_sub(now(), interval 30 DAY)

我得到#1111 - 无效使用群组功能错误。

基本上,当price落在标准偏差范围内时,我想要price的平均值。如果没有,则不应包含在平均

price的例子:51,48,49,56,48,56,51,58,4,56,53

平均正在做的事情时,不应该包含“4”。

谢谢!

1 个答案:

答案 0 :(得分:1)

请参阅http://sqlfiddle.com/#!2/4905c/2

select avg(price)
from prices
join (select avg(price) myavg, stddev_pop(price) mydev from prices) stats
where price between stats.myavg - stats.mydev and stats.myavg + stats.mydev