Ваша грамматика описывает одну команду:
say : SAY OPEN_PAREN expression CLOSE_PAREN SEMI_COLON
Так что это то, что принимает синтаксический анализатор.
Если вы хотите, чтобы ввод состоял из нескольких команд, вам нужно написать грамматику, описывающую этот ввод:
program :
program : program say
Идея состоит в том, чтобы вычислить некоторую функцию поля, которое имеет постоянную величину в каждой группе, которую Вы хотите:
select count(*), round(mynum/3.0) foo from mytable group by foo;
Я не знаю, применимо ли это к mySql, так или иначе в SQL Server я думаю, что можно "просто" использовать группу и в списке выборки И В группе списком.
Что-то как:
select
CASE
WHEN id <= 20 THEN 'lessthan20'
WHEN id > 20 and id <= 30 THEN '20and30' ELSE 'morethan30' END,
count(*)
from Profiles
where 1=1
group by
CASE
WHEN id <= 20 THEN 'lessthan20'
WHEN id > 20 and id <= 30 THEN '20and30' ELSE 'morethan30' END
возвраты что-то как
column1 column2
---------- ----------
20and30 3
lessthan20 3
morethan30 13