z*****v 发帖数: 54 | 1 表结构和数据是这样
fldone,fldtwo,fldthree, fldfour
"Daisy","1",88, 86
"Dandelion","1",100, 90
"Dandelion","2",90, 20
"Dandelion","3",70, 30
"Rose","1",55, 10
"Dandelion","4",40, 10
"Daisy","2",86,22
我想求和第四列的值,sum fldfour group by fldone,但是返回的结果里的fldthree
这一列的值是fldtwo = 1这一行的。
期望结果是这样的:
Daisy, 1, 88, 108
Dandelion, 1, 100, 150
Rose, 1, 55, 10
我估计要用到partition by,可是我搞不出来。请教一下各位。多谢了! | c*****d 发帖数: 6045 | 2 select a.*
from (select f1,f2,f3,sum(f4) over (partition by f1) from table_name) a
where f2=1; | c*****d 发帖数: 6045 | | s**********o 发帖数: 14359 | 4 这样不需要PARTITION
select a*, b.f4
from
(select distinct f1,f2,f3 where f2=1) a
inner join
(select f1, sum(f4) as f4 group by f1) b
on
(
a.f1=b.f1
) | B*****g 发帖数: 34098 | 5 selfjoin 左边=1,右边算sum
【在 c*****d 的大作中提到】 : subquery也可以实现
| z*****v 发帖数: 54 | 6 多谢几位,两种方法都试了,都对。
Coolbid 的 在 over (partition by f1) 后要加个alias, as f4。
多谢了! |
|