你要理解这个:
就是GROUP BY语句后的字段要求在在SELECT语句中有,并且不能缺少,当然要除了集合函数

解决方案 »

  1.   

    你要理解这个:
    就是GROUP BY语句后的字段要求在在SELECT语句中有,并且不能缺少,当然要除了集合函数
      

  2.   

    用分析函数
    SELECT manager_id, last_name, salary,
       SUM(salary) OVER (PARTITION BY manager_id ORDER BY salary
       RANGE UNBOUNDED PRECEDING) l_csum
       FROM employees;MANAGER_ID LAST_NAME           SALARY     L_CSUM
    ---------- --------------- ---------- ----------
           100 Mourgos               5800       5800
           100 Vollman               6500      12300
           100 Kaufling              7900      20200
           100 Weiss                 8000      28200
           100 Fripp                 8200      36400
           100 Zlotkey              10500      46900
           100 Raphaely             11000      68900
           100 Cambrault            11000      68900
           100 Errazuriz            12000      80900
    .
    .
    .
           149 Taylor                8600      30200
           149 Hutton                8800      39000
           149 Abel                 11000      50000
           201 Fay                   6000       6000
           205 Gietz                 8300       8300
               King                 24000      24000
      

  3.   

    select a.code,b.* from school a,(select name ,sum(number) from school group by name ) b order by b.name;
      

  4.   

    --靠,竟然没有关联
    select a.code,b.* from school a,(select name ,sum(number) from school group by name ) b  where a.name=b.name order by b.name;
      

  5.   

    呵呵,oracle里面跟sql差不多,它的select语句里面除了聚合函数,不能比group by语句里的列多,比它里面的列少了还是没问题的
    支持楼上兄弟的实现方法,效率也不错
      

  6.   

    select * from (select .... group by ..) order by ...
      

  7.   

    再从school表中写一个select语句作为一个表然后关联查询
    select a.code,b.name,b.sum_num  
    from school a
    (select name ,sum(number) sum_num from school group by name order by name ) b
    where a.name = a.name;