结合多个SQL查询以提高速度

Ned*_*ton 0 mysql sql

我有一个大约有1000万行的MySQL数据库和一个简单的SQL查询:

SELECT output FROM `table` WHERE MA > Price
Run Code Online (Sandbox Code Playgroud)

除了以上,我想得到:

  • 返回结果的平均值
  • 返回结果的标准偏差
  • 返回的结果总数
  • 结果的百分比是积极的

我现有代码的问题(如下所示)是我多次查询表.这看起来非常低效.

是否可以查询数据库一次,然后萃取,如平均值,标准偏差,信息.从结果?如果是这样,最有效的方法是什么?

SELECT STDDEV_POP(output) FROM `table` WHERE MA > Price
SELECT AVG(output) FROM `table` WHERE MA > Price
SELECT COUNT(output) FROM `table` WHERE MA > Price AND output > 0
SELECT COUNT(output) FROM `table` WHERE MA > Price AND output < 0
Run Code Online (Sandbox Code Playgroud)

***编辑除了平均值,标准偏差和正百分比之外,是否还可以获得实际的"输出"值?换句话说,还可以包含以下查询吗?

SELECT output FROM `table` WHERE MA > Price
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

是.在这种情况下,您只需要一些条件聚合:

SELECT STDDEV_POP(output) as stddev_pop,
       AVG(output) as avg,
       SUM(output > 0) as output_gt_0,
       SUM(output < 0) as output_lt_0
FROM `table`
WHERE MA > Price;
Run Code Online (Sandbox Code Playgroud)