科目编号  金额
001        230
001        250
002        850
002        120求相同科目编号金额的平均数
如:001编号的:(230+250)/2
这样的SQL语句怎么写?
伏望指教!!

解决方案 »

  1.   

    SELECT [科目编号],AVG([金额])
    FROM TB
    GROUP BY [科目编号]
      

  2.   

    select 科目编号,avg(金额)
    from xxxx
    group by 科目编号
      

  3.   

    select 科目编号 , cast(avg(金额*1.0) as varchar(18,2)) from tb group by 科目编号
      

  4.   

    select 科目编号,avg(金额) as 金额 
    from tb 
    group by 科目编号
      

  5.   

    create table tb(科目编号 varchar(10), 金额 int)
    insert into tb values('001' ,       230 )
    insert into tb values('001' ,       250 )
    insert into tb values('002' ,       850 )
    insert into tb values('002' ,       120 )
    goselect 科目编号 , cast(avg(金额*1.0) as varchar(18,2)) from tb group by 科目编号drop table tb/*
    科目编号                          
    ---------- ------------------ 
    001        240.000000
    002        485.000000(所影响的行数为 2 行)*/
      

  6.   

    select 科目编号,avg(金额) as 金额
    from xxxx
    group by 科目编号
      

  7.   

    select
     科目编号,avg(金额) as 金额
    from
     tb
    group by
     科目编号
      

  8.   


    select 科目编号,avg(金额)
    from  表名
    group by 科目编号
      

  9.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  10.   

    select 科目编号,
           sum(case 月份 when '1' then 金额 else 0 end) [1月份],
           sum(case 月份 when '2' then 金额 else 0 end) [2月份],
           sum(case 月份 when '3' then 金额 else 0 end) [3月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (1,2,3)) [1季度平均],
           sum(case 月份 when '4' then 金额 else 0 end) [4月份],
           sum(case 月份 when '5' then 金额 else 0 end) [5月份],
           sum(case 月份 when '6' then 金额 else 0 end) [6月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (4,5,6)) [2季度平均],
           sum(case 月份 when '7' then 金额 else 0 end) [7月份],
           sum(case 月份 when '8' then 金额 else 0 end) [8月份],
           sum(case 月份 when '9' then 金额 else 0 end) [9月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (7,8,9)) [3季度平均],
           sum(case 月份 when '10' then 金额 else 0 end) [10月份],
           sum(case 月份 when '11' then 金额 else 0 end) [11月份],
           sum(case 月份 when '12' then 金额 else 0 end) [12月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (10,11,12)) [4季度平均]
    from tb t
    group by 科目编号
      

  11.   

    MS SQL server2000 下
    表结构:
    create table tab
    (
     科目编号 varchar(20),
     月份 int,
     金额 double
    )表数据:
    id 科目编号 月份 金额
    1   001         1   350
    2   001         1   750
    3   002         2   550
    4   003         1   150
    5   002         3   155
    6   004         1   950
    7   003         4   122
    想得到以下结果:科目编号 1月份  2月份  3月份 1季度平均 4月份 5月份  .......12月份 4季度平均
     001        1100     0      0        1100       0      0              0         0   
      

  12.   

    select 科目编号,
    avg(case 月份 when 1 then 金额 else 0 end) as 1月份,
    avg(case 月份 when 2 then 金额 else 0 end) as 2月份,
    avg(case 月份 when 3 then 金额 else 0 end) as 3月份,
    avg(case when 月份 between 1 and 3 then 金额 else 0 end) as 1季度平均,
    avg(case 月份 when 4 then 金额 else 0 end) as 4月份,
    avg(case 月份 when 5 then 金额 else 0 end) as 5月份,
    avg(case 月份 when 6 then 金额 else 0 end) as 6月份,
    avg(case when 月份 between 4 and 6 then 金额 else 0 end) as 2季度平均,
    avg(case 月份 when 7 then 金额 else 0 end) as 7月份,
    avg(case 月份 when 8 then 金额 else 0 end) as 8月份,
    avg(case 月份 when 9 then 金额 else 0 end) as 9月份,
    avg(case when 月份 between 7 and 10 then 金额 else 0 end) as 3季度平均,
    avg(case 月份 when 10 then 金额 else 0 end) as 10月份,
    avg(case 月份 when 11 then 金额 else 0 end) as 11月份,
    avg(case 月份 when 12 then 金额 else 0 end) as 12月份,
    avg(case when 月份 between 11 and 12 then 金额 else 0 end) as 3季度平均
    from tab
    group by 科目编号
      

  13.   

    SELECT [科目编号],AVG([金额])
    FROM TB
    GROUP BY [科目编号]
    select [科目编号],
           sum(case 月份 when '1' then 金额 else 0 end) [1月份],
           sum(case 月份 when '2' then 金额 else 0 end) [2月份],
           sum(case 月份 when '3' then 金额 else 0 end) [3月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (1,2,3)) [1季度平均],
           sum(case 月份 when '4' then 金额 else 0 end) [4月份],
           sum(case 月份 when '5' then 金额 else 0 end) [5月份],
           sum(case 月份 when '6' then 金额 else 0 end) [6月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (4,5,6)) [2季度平均],
           sum(case 月份 when '7' then 金额 else 0 end) [7月份],
           sum(case 月份 when '8' then 金额 else 0 end) [8月份],
           sum(case 月份 when '9' then 金额 else 0 end) [9月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (7,8,9)) [3季度平均],
           sum(case 月份 when '10' then 金额 else 0 end) [10月份],
           sum(case 月份 when '11' then 金额 else 0 end) [11月份],
           sum(case 月份 when '12' then 金额 else 0 end) [12月份],
           (select cast(avg(金额*1.0) as varchar(18,2)) from tb where 科目编号 = t.科目编号 and 月份 in (10,11,12)) [4季度平均]
    from tb t
    group by [科目编号]
    来晚了,只能复制前辈们的代码混点分了.
      

  14.   

    非常感谢网友们热心帮助与指点,尤其是 ACMAIN_CHM 、dawugui(爱新觉罗.毓华)、guguda2008 对我帮助很大,对于你们的热情,我只能感激不尽,谢谢了!!!