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该怎么写。

解决方案 »

  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.   

    SELECT USER_ID,
           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 字句则默认是按全部字段分组。
      

  4.   

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

  5.   

    ORACLE和MSSQL里分组的话  SELECT后面只能跟聚合函数和分组列 = =
      

  6.   

    你这是问group by 的用法吗?
    如果是多个字段的话,就用逗号分隔开
    比如group by name,key;
    当使用group by 的时候出现在查询字段就有要求
    在select 后的字段必须出现在group by 后面,
    或者出现在聚合函数里
    举个例子:
      

  7.   

    初学sql语句?这么简单的自己找本书好好看看吧。
      

  8.   

    除了sum,max,count,min等这些函数,其他的字段都得放入分组中
      

  9.   

    当同一个分组这三个字段USER_TEL,USER_EMAIL, USER_ADD,有不同值的时候,你让他何去何从,他就不知道该选哪一个了。
      

  10.   

    分组条件中没有user_id啊
      

  11.   

    属于分组函数的概念不清,其中在分组函数中,select子句里面不能既有聚合函数,又有除group by后面自带的字段的其他字段。
      

  12.   

    建议楼主多了解一下SQL基本语法,这样会少走弯路噢
      

  13.   

    select后面的所有非聚合函数的字段,都必须出现在Group by 的后面,作为分组条件
      

  14.   

    groupby 里面的字段不够,就会报这个错,我以前经常会出现这个问题,注意就好了
      

  15.   

    如果查询语句有group by,那么你在select后面索要查询的字段,都必须要参与分组,当然group后的字段,你查询时可用选择性展示出来。除了sum,等费聚合函数。很容易理解啊。
      

  16.   


    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;