The sketch for a SELECT statement proposed by RCSQL (Lee 2019). $COL represents a column. $AGG is one of {none, max, min, count, sum, avg}, and $COND is one of the conditional operators {between, =, >, <, >=, <=, !=, in, like, is, exists}. $ORD is a binary value for keywords ASC/DESC, and $CONJ is one of conjunctions {AND, OR}. $VAL is the value for WHERE/HAVING condition; $SEL represents the slot for another SELECT statement.
CLAUSE . | SKETCH . |
---|---|
SELECT | ( $AGG$COL ) + |
ORDERBY | ( $AGG$COL ) +$ORD |
GROUPBY | ( $COL )* |
LIMIT | $NUM |
WHERE | ( $CONJ$COL$COND$VAL |$SEL ) * |
HAVING | ($CONJ$AGG$COL$COND$VAL |$SEL) * |
INTERSECT | $SEL |
UNION | |
EXCEPT |
CLAUSE . | SKETCH . |
---|---|
SELECT | ( $AGG$COL ) + |
ORDERBY | ( $AGG$COL ) +$ORD |
GROUPBY | ( $COL )* |
LIMIT | $NUM |
WHERE | ( $CONJ$COL$COND$VAL |$SEL ) * |
HAVING | ($CONJ$AGG$COL$COND$VAL |$SEL) * |
INTERSECT | $SEL |
UNION | |
EXCEPT |