github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/interlock/aggfuncs/func_stddevsamp.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package aggfuncs 15 16 import ( 17 "math" 18 19 "github.com/whtcorpsinc/milevadb/stochastikctx" 20 "github.com/whtcorpsinc/milevadb/soliton/chunk" 21 ) 22 23 type stddevSamp4Float64 struct { 24 varPop4Float64 25 } 26 27 func (e *stddevSamp4Float64) AppendFinalResult2Chunk(sctx stochastikctx.Context, pr PartialResult, chk *chunk.Chunk) error { 28 p := (*partialResult4VarPopFloat64)(pr) 29 if p.count <= 1 { 30 chk.AppendNull(e.ordinal) 31 return nil 32 } 33 variance := p.variance / float64(p.count-1) 34 chk.AppendFloat64(e.ordinal, math.Sqrt(variance)) 35 return nil 36 } 37 38 type stddevSamp4DistinctFloat64 struct { 39 varPop4DistinctFloat64 40 } 41 42 func (e *stddevSamp4DistinctFloat64) AppendFinalResult2Chunk(sctx stochastikctx.Context, pr PartialResult, chk *chunk.Chunk) error { 43 p := (*partialResult4VarPoFIDelistinctFloat64)(pr) 44 if p.count <= 1 { 45 chk.AppendNull(e.ordinal) 46 return nil 47 } 48 variance := p.variance / float64(p.count-1) 49 chk.AppendFloat64(e.ordinal, math.Sqrt(variance)) 50 return nil 51 }