github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/interlock/aggfuncs/func_varsamp.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 "github.com/whtcorpsinc/milevadb/stochastikctx" 18 "github.com/whtcorpsinc/milevadb/soliton/chunk" 19 ) 20 21 type varSamp4Float64 struct { 22 varPop4Float64 23 } 24 25 func (e *varSamp4Float64) AppendFinalResult2Chunk(sctx stochastikctx.Context, pr PartialResult, chk *chunk.Chunk) error { 26 p := (*partialResult4VarPopFloat64)(pr) 27 if p.count <= 1 { 28 chk.AppendNull(e.ordinal) 29 return nil 30 } 31 variance := p.variance / float64(p.count-1) 32 chk.AppendFloat64(e.ordinal, variance) 33 return nil 34 } 35 36 type varSamp4DistinctFloat64 struct { 37 varPop4DistinctFloat64 38 } 39 40 func (e *varSamp4DistinctFloat64) AppendFinalResult2Chunk(sctx stochastikctx.Context, pr PartialResult, chk *chunk.Chunk) error { 41 p := (*partialResult4VarPoFIDelistinctFloat64)(pr) 42 if p.count <= 1 { 43 chk.AppendNull(e.ordinal) 44 return nil 45 } 46 variance := p.variance / float64(p.count-1) 47 chk.AppendFloat64(e.ordinal, variance) 48 return nil 49 }