SQL的GROUP BY错误SELECT SUM(ADMIN_ENTERED)FROM STATEGROUP BY YE
![](images/u2507.png)
SQL的GROUP BY错误
SELECT SUM(ADMIN_ENTERED)
FROM STATE
GROUP BY YEAR_ENTERED
HAVING COUNT(YEAR_ENYERED)=MAX(COUNT(YEAR_ENTERED))
系统提示::ERROR at line 4:
ORA-00935:group function is nested too deeply
这是表格:
CREATE TABLE STATE
(STATE_NAME VARCHAR2(15) NOT NULL,
ADMIN_ENTERED NUMBER(2),
PRESNAME_ENTERED VARCHAR2(20),
YEAR_ENTERED NUMBER(4)
CONSTRAINT CHECK_YEAR_ENTERED
CHECK (YEAR_ENTERED BETWEEN 1600 AND 2100),
CONSTRAINT PRIM_KEY_STATE PRIMARY KEY (STATE_NAME)
);
想把最多的YEAR_ENTERED那组里面的ADMIN_ENYERED的int求和显示.
系统提示:HAVING COUNT(YEAR_ENYERED)=MAX(COUNT(YEAR_ENTERED))
*
ERROR at line 4:
ORA-00935:group function is nested too deeply
SELECT SUM(ADMIN_ENTERED)
FROM STATE
GROUP BY YEAR_ENTERED
HAVING COUNT(YEAR_ENYERED)=MAX(COUNT(YEAR_ENTERED))
系统提示::ERROR at line 4:
ORA-00935:group function is nested too deeply
这是表格:
CREATE TABLE STATE
(STATE_NAME VARCHAR2(15) NOT NULL,
ADMIN_ENTERED NUMBER(2),
PRESNAME_ENTERED VARCHAR2(20),
YEAR_ENTERED NUMBER(4)
CONSTRAINT CHECK_YEAR_ENTERED
CHECK (YEAR_ENTERED BETWEEN 1600 AND 2100),
CONSTRAINT PRIM_KEY_STATE PRIMARY KEY (STATE_NAME)
);
想把最多的YEAR_ENTERED那组里面的ADMIN_ENYERED的int求和显示.
系统提示:HAVING COUNT(YEAR_ENYERED)=MAX(COUNT(YEAR_ENTERED))
*
ERROR at line 4:
ORA-00935:group function is nested too deeply
已提交,审核后显示!提交回复
共1条回复
俘虏后 共回答了14个问题
|采纳率100%- 错误提示的意思是group部分定义条件过深.事实上在使用having条件时,一定要注意的是不要过多的使用聚合函数的.因为每一个聚合函数的计算都是非常大的,所以这里的错误就是你使用了过多的聚合函数的原因.
在SQL中存在一个叫子语句嵌套的.如:select * from A wrhere A.p in(select * from B where B.p in (select.))看似这个条件可能无限的写下去,事实上由于这种查询非常的耗时的,所以在SQL中规定是子嵌套不能超出三层.其一般情况下我们采用的都其的处理方式的,避免使用这种子查询嵌套的,如果不得已才使用一个嵌套.因为这种查询太耗内存的!所以我们都是不建议使用的!
而聚合函数根其十分类似,因为其对所以结果进行一个分筛统计,也是非常耗时的,不建议使用聚合函数的嵌套的!所以这里必须要考虑这个的问题的!
对于你的问题,我可能理解的不太透彻,但我不明白的是为什么你非要条件压到having上呢?你有没有考虑过top 1这一个参数的使用呢?
Select top 1 sum(Admin_EnyEred) as maxenyered from state
group by year_entered
order by maxenyered Desc
这种条件中我连having条件都不再使用的!
使用多重聚合时我也不知道SQL是否让通过,你可以试一下的,但我想应该是有一定的问题的,至少效率也不行!
Select max(sum(Admin_EnyEred)) as maxenyered from state
group by year_entered
从你自己的语句中我看你可能是对having条件不太理解造成的,事实上having条件与where是不同的,很多时间也是无法转化的.只有部分条件是可以转化的,having又称分组依据,也就是分组前对分组进行一个“过滤”筛选的,而不是where条件的对结果集前后都可以筛选的,所以这样的having条件从你的使用上来说根本就是不对的! - 1年前
相关推荐
大家在问
- 1由于购进新设备王叔叔由每小时生产120个零件,增加到每小时生产150个,王叔叔的工作效率增加了百分之几?
- 2如下图三个温度计的读数分别为为______℃.______℃.______℃.
- 3地球自转 日出日落如果把地球看做静止的,那么太阳就是自东向西围着地球转,所以是东边日出,西边日落;如果不这样假设地球静止
- 4为什么作者说“我不敢说生命是什么,我只能说生命像什么”
- 5(2014•深圳)如图是尿液形成过程中葡萄糖的浓度变化曲线示意图,这种变化发生的部位是( )
- 6(1)8×六分之五+0.4÷4,(2)125×七分之六×8×六分之七,(3)四分之一×75+25%×15+10×0.25
- 725分之17乘以37分之5加25分之18乘以37分之17加37分之17乘以25分之14,算式和答案是多少?
- 8expect有没有就近原则的 No one expect XX and XX _______ unhappy yeste
- 9形容波浪翻滚,一会儿高,一会儿低的词语
- 10已知Q=mc(t1-t2)(m≠0,c≠0),求t1
- 11我想问一下,上下两条边难道没切割磁感线吗?为什么没有感应电流?
- 12观察下面的“生物进化树”,回答下面的问题:
- 13He said that he ____________to the United States.A.had never
- 14奇怪的三角形!
- 15在一个大笼子里关了一些鸡和一些兔子.数它们的头,一共有36个;数它们的腿一共有100条.问鸡和兔各多少