ORA-00937:不是单组分组函数_Oracle

Demo:

 1 SELECT USER_ID,
 2        USER_NAME,
 3        USER_SEX,
 4        MAX(USER_AGE),
 5        SUM(USER_MONEY) AS USER_MONEY
 6        USER_TEL,
 7        USER_EMAIL,
 8        USER_ADD,
 9        USER_STATUS,
10   FROM USERS
11  ORDER BY USER_NAME, USER_SEX, USER_STATUS;
12 类似这种,多个字段的GROUP BY该怎么写。 

1.USER_TEL,        USER_EMAIL,        USER_AD不是分组函数里的字段。
你是group by 的语法不太熟悉。
对于group by 语句,在查询出来的字段中,只能包含group by后面跟的字段以及分组函数。。
就是说USER_NAME, USER_SEX, USER_STATUS;可以查询,因为是分组字段
MAX(USER_AGE),        SUM(USER_MONEY) 可以使用因为是分组函数。
但是其他的字段什么都不是,所以报错。。

2.简单的来说 如果查询字段中有sum、count类似的聚合函数 那么其他字段必须要在group by 中出现

再通俗的说 group by后面的字段 不能少于查询中的非聚合函数字段

3.GROUP by 写法,把在SELECT 中出现的字段,而有没有用聚合函数的字段,都要列在GROUP BY 子句里

4.

5.

时间: 2024-10-13 03:54:19

ORA-00937:不是单组分组函数_Oracle的相关文章

Error:ORA-00937: 非单组分组函数错误

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无法操

Oracle的“ORA-00937: 不是单组分组函数” 如何解决?

之前在编写oracle的sql语句时遇到这个问题,这里做个记录 问题描述:ORA-00937: 不是单组分组函数 问题原因:select语句中又在查询某一列的值,其中还有聚合函数 原先本人编写SQL是这样的 --查找配送单的收货配送点.送货配送点.配送包数量-- select R_DELIVEPOINT_ID,S_DELIVEPOINT_ID,SUM(PACK_NUM) PACK_NUM from TMS_DELIVERY; 其中,用到聚合函数SUM(),执行时导致这个问题 如果要解决这个问题,

数据库SQL的分组函数

分组函数:(五个) 1···max(expr):求expr的最大值 }\ 2···min(expr):求expr的最小值 }-- 数据类型是有规定的 3···sum(expr):求expr的总和 }-- 必须是字符型或数字 4···avg(expr):求expr的平均值 }/ 5···count(expr):求expr的个数 expr的类型不能是空,如果是空,则不计入其中, 因此需要用到nvl()来进行转换 group by expr1,expr2,...的用法: group by 的后面跟的是

Day05 分组函数

1. 什么是分组函数 2. 组函数语法 3. 分组数据 4. 非法使用组函数 5. 过滤分组

ORACLE分组函数stddev和variance,我心存的疑问

方差函数VARIANCE(x),具体方法是: 设方差s,a为x1,x2...xn的平均值 ,则s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+--(xn-a)^2]/n 标准差函数STDDEV(x),具体算法是: 方差开方.设标准查为& ,则 &^2 = s 但是我通过以下的实验,发现oracle是这样计算variance()的, s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+--(xn-a)^2]/n-1 ,注意不是除以n,而是n-1 ---------

Oracle之分组函数嵌套以及表连接

--1 数据环境准备 scott 用户下面的emp,dept表 --2 要求 :求平均工资最高的部门编号,部门名称,部门平均工资 select d.deptno,d.dname,e.salfrom(select avg(sal) sal,deptnofrom emp egroup by deptnohaving avg(sal) = (select max(avg(sal)) from emp group by deptno))eleft join dept don e.deptno=d.dep

17.07.29 分组函数 多表连接 子查询

分组函数: 将得到的原始数据进行进一步的处理 count 对非空的数值做统计 只有 count(*) 不去除空值 处理过程: select      From from where group by sum having

Oracle基本语法&amp;&amp;函数&amp;&amp;子查询&amp;&amp;分页查询&amp;&amp;排序&amp;&amp;集合操作&amp;&amp;高级分组函数

一.  数据库 手工---文件管理---数据库 DB:Database 数据库. DBMS:管理数据库的软件.(oracle) 主流关系数据库: 1.      Oracle 2.      DB2 3.      SQL Server 基本没人使 4.      MySQL  基本没人用,免费 Linux 开源,可以发现漏洞补上 Windows服务器会有补丁,数据易泄漏 eclipse 日食 数据表(Table): 表的行(Row):记录 表的列(Column):字段 二.  关系型数据库 一

Oracle学习(4):分组函数

分组函数 什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值 组函数的类型 lAVG lCOUNT lMAX lMIN lSUM 数值求和 SQL> --求员工工资总额 SQL> select sum(sal) from emp; SUM(SAL) ---------- 29025 求数据条数 SQL> --求员工的人数 SQL> select count(*)from emp; COUNT(*) ---------- 14 求平均 SQL> --平均工资 SQ