Комплексный средний расчет - PullRequest
1 голос
/ 17 ноября 2010


В моей таблице указаны следующие значения:

MONTH  | value1 | value2|
-------|--------|-------|
2010/08|     0  |  700  |
2010/08|     0  |    0  |
2010/08| 41166  | 1500  |
2010/09|     0  |  700  |
2010/09|     0  | 1500  |
2010/09|     0  |    0  |
2010/10|     0  |    0  |
2010/10|     0  | 1500  |
2010/10|     0  |  700  |
2010/11|     0  |  700  |
2010/11|     0  |    0  |
2010/11|     0  | 1500  |
2010/11|     0  |    0  |

теперь этот запрос возвращает мне сумму value2 / value1, сгруппированных по месяцам

SELECT month, SUM(value2) / SUM(value1)*100 as percent
 GROUP BY month
------------------------
MONTH   |     PERCENT
--------|---------------
2010/08 |5,3442161006656
2010/09 |              0
2010/10 |              0
2010/11 |              0

я хочу вычислить среднее значение, которое можно сделать следующим образом:

SELECT AVG(percent) 
  FROM ( SELECT month, SUM(value2) / SUM(value1)*100 as percent
          GROUP BY month)
-------------
|AVG(percent)|
-------------|
|1,336       |

но моя проблема в том, что я не должен использовать sub_query и не должен использовать GROUP BY , возможно ли это? Заранее благодарю за ответы

1 Ответ

0 голосов
/ 17 ноября 2010

Возможно, вы ищете COMPUTE :

COLUMN dummy NOPRINT
COMPUTE AVG OF percent ON dummy
BREAK ON dummy
SELECT NULL AS dummy, SUM(value2) / SUM(value1)*100 AS percent
GROUP BY month
ORDER BY month

Это приведет к созданию строки с агрегированными значениями ниже результатов вашего запроса.

Поскольку я не знаюOracle Я не знаю, работает ли этот конкретный синтаксис для вас.В SQL Server есть предложение COMPUTE , которое работает немного иначе.Я был бы удивлен, если у Oracle нет чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...