com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause Java Examples
The following examples show how to use
com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MySQLSelectASTVisitor.java From Zebra with Apache License 2.0 | 5 votes |
@Override public boolean visit(SQLSelectGroupByClause x) { result.getMergeContext().increGroupByCount(); List<String> groupByColumns = new ArrayList<String>(); List<SQLExpr> items = x.getItems(); for (SQLExpr expr : items) { groupByColumns.add(((SQLName) expr).getSimpleName()); } result.getMergeContext().setGroupByColumns(groupByColumns); return true; }
Example #2
Source File: SqlParser.java From elasticsearch-sql with Apache License 2.0 | 4 votes |
private void findGroupBy(MySqlSelectQueryBlock query, Select select) throws SqlParseException { SQLSelectGroupByClause groupBy = query.getGroupBy(); //modified by xzb group by 增加Having语法 if (null != query.getGroupBy() && null != query.getGroupBy().getHaving()) { select.setHaving(query.getGroupBy().getHaving().toString()); } SQLTableSource sqlTableSource = query.getFrom(); if (groupBy == null) { return; } List<SQLExpr> items = groupBy.getItems(); List<SQLExpr> standardGroupBys = new ArrayList<>(); for (SQLExpr sqlExpr : items) { //todo: mysql expr patch if (sqlExpr instanceof MySqlOrderingExpr) { MySqlOrderingExpr sqlSelectGroupByExpr = (MySqlOrderingExpr) sqlExpr; sqlExpr = sqlSelectGroupByExpr.getExpr(); } if ((sqlExpr instanceof SQLParensIdentifierExpr || !(sqlExpr instanceof SQLIdentifierExpr || sqlExpr instanceof SQLMethodInvokeExpr)) && !standardGroupBys.isEmpty()) { // flush the standard group bys // zhongshu-comment 先将standardGroupBys里面的字段传到select对象的groupBys字段中,然后给standardGroupBys分配一个没有元素的新的list select.addGroupBy(convertExprsToFields(standardGroupBys, sqlTableSource)); standardGroupBys = new ArrayList<>(); } if (sqlExpr instanceof SQLParensIdentifierExpr) { // single item with parens (should get its own aggregation) select.addGroupBy(FieldMaker.makeField(((SQLParensIdentifierExpr) sqlExpr).getExpr(), null, sqlTableSource.getAlias())); } else if (sqlExpr instanceof SQLListExpr) { // multiple items in their own list SQLListExpr listExpr = (SQLListExpr) sqlExpr; select.addGroupBy(convertExprsToFields(listExpr.getItems(), sqlTableSource)); } else { // everything else gets added to the running list of standard group bys standardGroupBys.add(sqlExpr); } } if (!standardGroupBys.isEmpty()) { select.addGroupBy(convertExprsToFields(standardGroupBys, sqlTableSource)); } }