private void appendDerivedOrderColumns(final ItemsToken itemsToken, final List<OrderItem> orderItems, final SelectStatement selectStatement) { int derivedColumnOffset = 0; for (OrderItem each : orderItems) { if (!containsItem(selectStatement, each)) { String alias = DerivedColumn.ORDER_BY_ALIAS.getDerivedColumnAlias(derivedColumnOffset++); each.setAlias(alias); itemsToken.getItems().add(each.getQualifiedName().get() + " AS " + alias + " "); } } }
private void appendDerivedOrderColumns(final ItemsToken itemsToken, final List<OrderItem> orderItems, final SelectStatement selectStatement, final ShardingTableMetaData shardingTableMetaData) { int derivedColumnOffset = 0; for (OrderItem each : orderItems) { if (!containsItem(selectStatement, each, shardingTableMetaData)) { String alias = DerivedColumn.ORDER_BY_ALIAS.getDerivedColumnAlias(derivedColumnOffset++); each.setAlias(alias); itemsToken.getItems().add(each.getQualifiedName().get() + " AS " + alias + " "); } } }
private void appendDerivedGroupColumns(final ItemsToken itemsToken, final List<OrderItem> orderItems, final SelectStatement selectStatement, final ShardingTableMetaData shardingTableMetaData) { int derivedColumnOffset = 0; for (OrderItem each : orderItems) { if (!containsItem(selectStatement, each, shardingTableMetaData)) { String alias = DerivedColumn.GROUP_BY_ALIAS.getDerivedColumnAlias(derivedColumnOffset++); each.setAlias(alias); itemsToken.getItems().add(each.getQualifiedName().get() + " AS " + alias + " "); } } }
private void appendDerivedGroupColumns(final ItemsToken itemsToken, final List<OrderItem> orderItems, final SelectStatement selectStatement) { int derivedColumnOffset = 0; for (OrderItem each : orderItems) { if (!containsItem(selectStatement, each)) { String alias = DerivedColumn.GROUP_BY_ALIAS.getDerivedColumnAlias(derivedColumnOffset++); each.setAlias(alias); itemsToken.getItems().add(each.getQualifiedName().get() + " AS " + alias + " "); } } }
private void appendAvgDerivedColumns(final ItemsToken itemsToken, final SelectStatement selectStatement) { int derivedColumnOffset = 0; for (SelectItem each : selectStatement.getItems()) { if (!(each instanceof AggregationSelectItem) || AggregationType.AVG != ((AggregationSelectItem) each).getType()) { continue; } AggregationSelectItem avgItem = (AggregationSelectItem) each; String countAlias = DerivedColumn.AVG_COUNT_ALIAS.getDerivedColumnAlias(derivedColumnOffset); AggregationSelectItem countItem = new AggregationSelectItem(AggregationType.COUNT, avgItem.getInnerExpression(), Optional.of(countAlias)); String sumAlias = DerivedColumn.AVG_SUM_ALIAS.getDerivedColumnAlias(derivedColumnOffset); AggregationSelectItem sumItem = new AggregationSelectItem(AggregationType.SUM, avgItem.getInnerExpression(), Optional.of(sumAlias)); avgItem.getDerivedAggregationSelectItems().add(countItem); avgItem.getDerivedAggregationSelectItems().add(sumItem); // TODO replace avg to constant, avoid calculate useless avg itemsToken.getItems().add(countItem.getExpression() + " AS " + countAlias + " "); itemsToken.getItems().add(sumItem.getExpression() + " AS " + sumAlias + " "); derivedColumnOffset++; } }
private void appendAvgDerivedColumns(final ItemsToken itemsToken, final SelectStatement selectStatement) { int derivedColumnOffset = 0; for (SelectItem each : selectStatement.getItems()) { if (!isAverageSelectItem(each)) { continue; } AggregationSelectItem avgItem = (AggregationSelectItem) each; String countAlias = DerivedColumn.AVG_COUNT_ALIAS.getDerivedColumnAlias(derivedColumnOffset); AggregationSelectItem countItem = new AggregationSelectItem(AggregationType.COUNT, avgItem.getInnerExpression(), Optional.of(countAlias)); String sumAlias = DerivedColumn.AVG_SUM_ALIAS.getDerivedColumnAlias(derivedColumnOffset); AggregationSelectItem sumItem = new AggregationSelectItem(AggregationType.SUM, avgItem.getInnerExpression(), Optional.of(sumAlias)); avgItem.getDerivedAggregationSelectItems().add(countItem); avgItem.getDerivedAggregationSelectItems().add(sumItem); // TODO replace avg to constant, avoid calculate useless avg if (!(avgItem instanceof AggregationDistinctSelectItem)) { itemsToken.getItems().add(countItem.getExpression() + " AS " + countAlias + " "); itemsToken.getItems().add(sumItem.getExpression() + " AS " + sumAlias + " "); } derivedColumnOffset++; } }