【问题标题】:not single-group grouping function while using regr_slope使用 regr_slope 时不是单组分组功能
【发布时间】:2010-06-13 23:24:05
【问题描述】:

您好,我尝试运行:

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

它抛出“00937. 00000 - “不是单组函数””。当我从选择子句中删除年份时,问题消失了。我不应该能够选择要分组的列吗?

Oracle 11.2 sqldeveloper

求救!

【问题讨论】:

标签: sql oracle ora-00937


【解决方案1】:

这是因为您正在尝试使用一个函数 (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

【讨论】:

    【解决方案2】:

    你试过这样吗?

    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
    

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2021-02-03
      • 2021-12-23
      • 2014-08-06
      • 2018-02-02
      • 2021-06-08
      相关资源
      最近更新 更多