0

抱歉,这个问题太独特了,我想不出更好的标题。

我有一个表格如下:

--------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。

谢谢

4

3 回答 3

0

使用以下查询:-

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

于 2013-02-01T08:53:44.387 回答
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,晚安。凯利805

于 2013-01-31T21:12:56.070 回答
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
于 2013-01-31T21:23:32.650 回答