не функция группирования по одной группе при использовании regr_slope - PullRequest
0 голосов
/ 14 июня 2010

Привет, я пытаюсь запустить:

 select
  year,
  regr_slope(sum(sale_count),year) as slope,
from products
group by year

Выдает « 00937. 00000 -», а не групповую функцию одной группы. Разве я не могу выбрать столбец, с которым я группирую?

Oracle 11.2 sqldeveloper

Ты за помощь!

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

Это потому, что вы пытаетесь использовать функцию ( REGR_SLOPE ), которая может быть либо агрегатной (или аналитической) функцией для результата другого агрегата (SUM) - используйте:

  SELECT x.year,
         REGR_SLOPE(sum_sales, x.year) AS slope
    FROM (SELECT y.year,
                 SUM(y.sale_count) AS sum_sales
            FROM PRODUCTS y
        GROUP BY y.year) x
GROUP BY x.year

Альтернатива с использованием предложения WITH (Oracle 9i +):

WITH sums AS (
     SELECT y.year,
            SUM(y.sale_count)
       FROM PRODUCTS y
   GROUP BY y.year)
  SELECT x.year,
         REGR_SLOPE(sum_sales, x.year) AS slope
    FROM sums x
GROUP BY x.year
1 голос
/ 14 июня 2010

Вы пробовали это так?

select
   a.year
 , regr_slope(a.sale_count,a.year) as slope,
from (SELECT year
           , sum(sale_count) sale_count
        FROM products
      GROUP BY year) a
...