使用 regr_slope 时不是单组分组功能
Posted
技术标签:
【中文标题】使用 regr_slope 时不是单组分组功能【英文标题】:not single-group grouping function while using 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
求救!
【问题讨论】:
ORA-00937: techonthenet.com/oracle/errors/ora00937.php 【参考方案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
【讨论】:
以上是关于使用 regr_slope 时不是单组分组功能的主要内容,如果未能解决你的问题,请参考以下文章
Oracle的“ORA-00937: 不是单组分组函数” 如何解决?