Sybase SQL:获取最大总和

时间:2013-01-25 15:35:09

标签: sybase

抱歉,这个问题非常独特,我无法找到更好的标题。

我有以下表格的表格:

--------EXAMPLE---------------------------------------------------------
Cat1           Cat2          Value
a              e1            113
b              e1            14
a              e2            15
c              e3            13
a              e1            13
a              e2            11
c              e4            1

对于Cat1中的每个不同值,我想找到按Cat2分组的最大值,然后将它们相加。

因此,对于上表,Cat1 ='a'

第1步: 我想提取以下行:

Cat1           Cat2          Value
a              e1            113
a              e2            15
a              e1            13
a              e2            11

第2步: 我想提取对应于Cat2的最大值:

Cat1           Cat2          Value
a              e1            113
a              e2            15

第3步: 求和的总和:

Cat1           SumOfValueColumn
a              128
b              14
c              14

我可以通过多个步骤完成上述操作,但我希望一步到位。我正在使用Sybase。

由于

3 个答案:

答案 0 :(得分:0)

- 创建一个不会消耗更多数据库空间的视图。

create view max_cat_tbl_view
( Cat1, Cat2, Maxvalue ) as 
select Cat1, Cat2, max(Value) 
from cat_tbl 
group by Cat1, Cat2
go

- 查询视图以获得总和超过

select Cat1, sum(Maxvalue) from max_cat_tbl_view group by Cat1 order by Cat1
go

好的SQL,晚安。 kelley805

答案 1 :(得分:0)

- 通过删除中间的go,可以一步完成上一个答案。 - 这是使用Sybase临时表的另一个答案

select Cat1, Cat2, max(Value) Maxvalue
into   #max_cat_tbl
from   cat_tbl
group by Cat1, Cat2  order by 1, 2
select Cat1, sum(Maxvalue) from #max_cat_tbl group by Cat1 order by Cat1
drop table #max_cat_tbl
go

答案 2 :(得分:0)

使用以下查询: -

选择cat1,sum(Value)为sum_Value FROM          (SELECT cat1,cat2,max(Value)as value FROM#tmp1 group by cat1,cat2)d1  GROUP BY cat1