Error:ORA-00937: 非单组分组函数错误
2014-06-25 13:26
288 查看
ORA-00937: 非单组分组函数错误
select count(*), t.user_name from sys_user t, sys_department a, sys_dep_type d where t.dep_id = a.dep_id and a.dep_id = d.dep_id and t.recd_is_del = 0 <strong>group by t.user_name</strong>
此错误,关键在于聚合函数,也就是count(*)
原因是DB无法操作:
既然指定了聚合函数,又同时指定了其他列,还想不按照指定的列来分组,。就像你需要统计班上男女生的人数,但是又不能分组,只能在一条数据里表示出来,
.解决:使用group by 对其分组
聚合函数,
是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用1. AVG 返回指定组中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2. COUNT 返回指定组中项目的数量。
例:select count(prd_no) from sales
3. MAX 返回指定数据的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4. MIN 返回指定数据的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5. SUM 返回指定数据的和,只能用于数字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6. COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
7. GROUPING 产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.
例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
8. BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。
例:select prd_no,binary_checksum(qty) from sales group by prd_no
9. CHECKSUM_AGG 返回指定数据的校验值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
10. CHECKSUM 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。
11. STDEV 返回给定表达式中所有值的统计标准偏差。
例:select stdev(prd_no) from sales
12. STDEVP 返回给定表达式中的所有值的填充统计标准偏差。
例:select stdevp(prd_no) from sales
13. VAR 返回给定表达式中所有值的统计方差。
例:select var(prd_no) from sales
14. VARP 返回给定表达式中所有值的填充的统计方差。
例:select varp(prd_no) from sales)
相关文章推荐
- 关于ORA-00937: 非单组分组函数错误(ORACLE)
- 关于 ORA-00937: 非单组分组函数 异常
- ORA-00937:不是单组分组函数 ORA-22818:这里不允许出现子查询表达式
- ORA-00937: 不是单组分组函数
- ORA-00937: 不是单组分组函数
- oracle分组查询实例ORA-00979和ORA-00937错误分析
- ORA-00937: 不是单组分组函数
- ORA-00937: 不是单组分组函数
- ORA-00937: 不是单组分组函数
- ORA-03137: TTC protocol internal error : [12333]错误一例
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- 案例学习Oracle错误: ORA-00604 error occurred at recursive SQL lev
- ORA-03137: TTC protocol internal error : [12333]错误一例
- ORA-07445 [SIGBUS] [Object specific hardware error]错误一例
- C++ link2005 error 错误 解决方法汇总(一般重复定义,如果都是不就是 函数定义和实现没有分离)
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- PHP中使用error_log()函数来调试错误
- ORA-00600 错误 internal error code, arguments: [kkslgbv0], [], [], [], [], [], [], [ ]
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法