private void AppendAverageDistinctDerivedProjection(AggregationDistinctProjection averageDistinctProjection) { var innerExpression = averageDistinctProjection.GetInnerExpression(); var distinctInnerExpression = averageDistinctProjection.GetDistinctInnerExpression(); var countAlias = DerivedColumn.Get(DerivedColumnEnum.AVG_COUNT_ALIAS).GetDerivedColumnAlias(aggregationAverageDerivedColumnCount); AggregationDistinctProjection countDistinctProjection = new AggregationDistinctProjection(0, 0, AggregationTypeEnum.COUNT, innerExpression, countAlias, distinctInnerExpression); var sumAlias = DerivedColumn.Get(DerivedColumnEnum.AVG_SUM_ALIAS).GetDerivedColumnAlias(aggregationAverageDerivedColumnCount); AggregationDistinctProjection sumDistinctProjection = new AggregationDistinctProjection(0, 0, AggregationTypeEnum.SUM, innerExpression, sumAlias, distinctInnerExpression); averageDistinctProjection.GetDerivedAggregationProjections().Add(countDistinctProjection); averageDistinctProjection.GetDerivedAggregationProjections().Add(sumDistinctProjection); aggregationAverageDerivedColumnCount++; }
private AggregationDistinctToken GenerateSQLToken(AggregationDistinctProjection projection) { ShardingAssert.ShouldBeNotNull(projection.GetAlias(), "alias is required"); String derivedAlias = DerivedColumn.IsDerivedColumnName(projection.GetAlias()) ? projection.GetAlias() : null; return(new AggregationDistinctToken(projection.StartIndex, projection.StopIndex, projection.GetDistinctInnerExpression(), derivedAlias)); }