抱歉,这个问题非常独特,我无法找到更好的标题。
我有以下表格的表格:
--------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。
由于
答案 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