diff --git a/datafusion/physical-expr/src/aggregate/sum.rs b/datafusion/physical-expr/src/aggregate/sum.rs index 690415c5e27e..7b093d17d15f 100644 --- a/datafusion/physical-expr/src/aggregate/sum.rs +++ b/datafusion/physical-expr/src/aggregate/sum.rs @@ -33,7 +33,10 @@ use arrow::{ datatypes::Field, }; use arrow_array::cast::AsArray; -use arrow_array::types::{Decimal128Type, Int32Type, Int64Type, UInt32Type, UInt64Type}; +use arrow_array::types::{ + Decimal128Type, Float32Type, Float64Type, Int32Type, Int64Type, UInt32Type, + UInt64Type, +}; use arrow_array::{ArrowNativeTypeOp, ArrowNumericType, PrimitiveArray}; use datafusion_common::{downcast_value, DataFusionError, Result, ScalarValue}; use datafusion_expr::Accumulator; @@ -171,6 +174,14 @@ impl AggregateExpr for Sum { &self.data_type, &self.data_type, ))), + DataType::Float32 => Ok(Box::new(SumGroupsAccumulator::::new( + &self.data_type, + &self.data_type, + ))), + DataType::Float64 => Ok(Box::new(SumGroupsAccumulator::::new( + &self.data_type, + &self.data_type, + ))), DataType::Decimal128(_target_precision, _target_scale) => { Ok(Box::new(SumGroupsAccumulator::::new( &self.data_type,