Add support for multiple expressions, order by in aggregations (#879)

* Add support for multiple expressions, order by in aggregations

* Fix formatting errors

* Resolve linter errors
This commit is contained in:
Mustafa Akur 2023-05-17 20:04:33 +03:00 committed by GitHub
parent ae3b5844c8
commit 482a3ad417
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 8 deletions

View file

@ -1369,8 +1369,7 @@ impl<'a> Parser<'a> {
// ANSI SQL and BigQuery define ORDER BY inside function.
if !self.dialect.supports_within_after_array_aggregation() {
let order_by = if self.parse_keywords(&[Keyword::ORDER, Keyword::BY]) {
let order_by_expr = self.parse_order_by_expr()?;
Some(Box::new(order_by_expr))
Some(self.parse_comma_separated(Parser::parse_order_by_expr)?)
} else {
None
};
@ -1393,10 +1392,13 @@ impl<'a> Parser<'a> {
self.expect_token(&Token::RParen)?;
let within_group = if self.parse_keywords(&[Keyword::WITHIN, Keyword::GROUP]) {
self.expect_token(&Token::LParen)?;
self.expect_keywords(&[Keyword::ORDER, Keyword::BY])?;
let order_by_expr = self.parse_order_by_expr()?;
let order_by = if self.parse_keywords(&[Keyword::ORDER, Keyword::BY]) {
Some(self.parse_comma_separated(Parser::parse_order_by_expr)?)
} else {
None
};
self.expect_token(&Token::RParen)?;
Some(Box::new(order_by_expr))
order_by
} else {
None
};