0

我想汇总我的数据。我想对给定 ID 的所有列求和,并对另一列进行平均。这是我拥有的和我想要的。另外,我需要把它放到一个新表中。

ID    Cash    charge  total  proportion    gender   location

1     3.00     2.00    5.00   .66     m       28972

1     2.00     1.00    3.00   .66     m        28972

1     3.00     0.00    3.00     1      m        28972

1     4.00     2.00    6.00    .66      m        28972

2     3.00     3.00    6.00     .5      f        37352

2     4.00     6.00   10.00     .4      f        37352

这就是我想要的新表。我想对给定 ID 的现金、费用和总额求和,并且我想对给定 ID 的比例进行平均。性别和位置需要存在,但不能相加或平均

ID    SumCash    Sumcharge  Sumtotal  AvgProportion   Gender   Location

1     12.00    5.00   17.00   .745    m    28972

2     7.00    9.00   16.00   .45      f    37352
4

2 回答 2

2

您可以通过使用聚合函数sum()和来获得结果avg()

select id,
  sum(cash) SumCash,
  sum(charge) sumCharge,
  sum(total) sumTotal,
  avg(proportion) avgProportion
from yt
group by id;

请参阅带有演示的 SQL Fiddle

编辑,使用您添加的新列,您仍然可以使用聚合函数获得结果。您只需要在子句中包含genderandlocation列:GROUP BY

select id,
  sum(cash) SumCash,
  sum(charge) sumCharge,
  sum(total) sumTotal,
  avg(proportion) avgProportion,
  gender,
  location
from yt
group by id, gender, location;

请参阅带有演示的 SQL Fiddle

于 2013-06-11T12:56:05.910 回答
0

这里查询你需要什么:

SELECT ID, SUM(A.CASH), SUM(A.CHARGE), SUM(A.TOTAL), SUM(A.AVGPROPORTION)/COUNT(ID)
FROM A
WHERE A.ID = ID
GROUP BY A.ID
于 2013-06-11T13:03:49.023 回答