code: function aggregate(sAlias) {
  				var oDetails = oAggregation.aggregate[sAlias],
  					sAggregate = oDetails.name || sAlias,
  					sGrandTotal = sAlias,
  					sWith = oDetails.with;
  
  				if (sWith) {
  					if ((sWith === "average" || sWith === "countdistinct")
  							&& (oDetails.grandTotal || oDetails.subtotals)) {
  						throw new Error("Cannot aggregate totals with '" + sWith + "'");
  					}
  					sAggregate += " with " + sWith + " as " + sAlias;
  				} else if (oDetails.name) {
  					sAggregate += " as " + sAlias;
  				}
  				if (!bFollowUp) {
  					if (oDetails.min) {
  						processMinOrMax(sAlias, "min");
  					}
  					if (oDetails.max) {
  						processMinOrMax(sAlias, "max");
  					}
  				}
  				if (oDetails.grandTotal) {
  					bHasGrandTotal = true;
  					if (!mQueryOptions.$skip) {
  						if (sWith) {
  							sGrandTotal += " with " + sWith + " as UI5grand__" + sAlias;
  						}
  						aConcatAggregate.push(sGrandTotal);
  					}
  				}
  				return sAggregate;
  			}
docs: /*
  Returns the corresponding part of the "aggregate" term for an aggregatable property,
  for example "AggregatableProperty with method as Alias". Processes min/max as a side
  effect.
  
  @param {string} sAlias - An aggregatable property name
  @returns {string} - Part of the "aggregate" term
  @throws {Error} If "average" or "countdistinct" are used together with subtotals or
  grand totals