SELECT USER_ID,
USER_NAME,
USER_SEX,
MAX(USER_AGE),
SUM(USER_MONEY) AS USER_MONEY
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS,
FROM USERS
ORDER BY USER_NAME, USER_SEX, USER_STATUS;
类似这种,多个字段的GROUP BY该怎么写。
USER_NAME,
USER_SEX,
MAX(USER_AGE),
SUM(USER_MONEY) AS USER_MONEY
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS,
FROM USERS
ORDER BY USER_NAME, USER_SEX, USER_STATUS;
类似这种,多个字段的GROUP BY该怎么写。
解决方案 »
- SQL Server版的这个存储过程在ORACLE里,如何写?
- 急求:Oracle9i 数据容量问题(30分)
- trigger提示无效且未通过重新确认
- ●●●关于散列索引的问题,请指教!多谢●●●
- 在ORACLE的Schema Manager中编写存储过程的问题
- Net Configuration Assistant 配置以后测试连接不上,怎么办?
- sequence问题!!急
- 麻烦进来看一下,是自动递增和触发器的问题
- oracle9改不了字段---开始是用了小写字作字段名现在改成大写才行
- 为什么oracle中有些sql查询语句在where后加 tablename.fieldname like '%' 后查询效率会提高几倍?
- 紧急求助!!!在线等........................................
- ETL转DBA或其他开发
你是group by 的语法不太熟悉。
对于group by 语句,在查询出来的字段中,只能包含group by后面跟的字段以及分组函数。。
就是说USER_NAME, USER_SEX, USER_STATUS;可以查询,因为是分组字段
MAX(USER_AGE), SUM(USER_MONEY) 可以使用因为是分组函数。
但是其他的字段什么都不是,所以报错。。
USER_NAME,
USER_SEX,
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS,
MAX(USER_AGE),
SUM(USER_MONEY) AS USER_MONEY
FROM USERS
GROUP BY USER_ID,
USER_NAME,
USER_SEX,
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS
ORDER BY USER_NAME, USER_SEX, USER_STATUS;即按 USER_ID,
USER_NAME,
USER_SEX,
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS 分组统计 MAX(USER_AGE) 和 SUM(USER_MONEY) ,
使用统计函数时,结果集中的字段必须是group by(分组)的字段,没有在group by 中的只能存在于统计函数参数中,
如果结果集只有统计函数且没有group by 字句则默认是按全部字段分组。
如果是多个字段的话,就用逗号分隔开
比如group by name,key;
当使用group by 的时候出现在查询字段就有要求
在select 后的字段必须出现在group by 后面,
或者出现在聚合函数里
举个例子:
SELECT USER_ID,
USER_NAME,
USER_SEX,
MAX(USER_AGE) USER_AGE,
SUM(USER_MONEY) AS USER_MONEY
USER_TEL,
USER_EMAIL,
USER_ADD,
USER_STATUS,
FROM USERS
ORDER BY USER_ID,USER_NAME, USER_SEX,USER_TEL,USER_EMAIL,USER_ADD, USER_STATUS;