code: func calculateEstimateNDV(h *topNHelper, rowCount uint64) (ndv uint64, scaleRatio uint64) {
  	sampleSize, sampleNDV, onlyOnceItems := h.sampleSize, uint64(len(h.sorted)), h.onlyOnceItems
  	scaleRatio = rowCount / sampleSize
  
  	if onlyOnceItems == sampleSize {
  		// Assume this is a unique column, so do not scale up the count of elements
  		return rowCount, 1
  	} else if onlyOnceItems == 0 {
  		// Assume data only consists of sampled data
  		// Nothing to do, no change with scale ratio
  		return sampleNDV, scaleRatio
  	}
  	// Charikar, Moses, et al. "Towards estimation error guarantees for distinct values."
  	// Proceedings of the nineteenth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems. ACM, 2000.
  	// This is GEE in that paper.
  	// estimateNDV = sqrt(N/n) f_1 + sum_2..inf f_i
  	// f_i = number of elements occurred i times in sample
  
  	f1 := float64(onlyOnceItems)
  	n := float64(sampleSize)
  	N := float64(rowCount)
  	d := float64(sampleNDV)
  
  	ndv = uint64(math.Sqrt(N/n)*f1 + d - f1 + 0.5)
  
  	if ndv < sampleNDV {
  		ndv = sampleNDV
  	}
  	if ndv > rowCount {
  		ndv = rowCount
  	}
  	return ndv, scaleRatio
  }
docs: // calculateEstimateNDV calculates the estimate ndv of a sampled data from a multisize with size total.