[ 
https://issues.apache.org/jira/browse/CALCITE-5955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17769918#comment-17769918
 ] 

Julian Hyde commented on CALCITE-5955:
--------------------------------------

I take your point. The ISO SQL "SELECT PERCENTILE_CONT( 0.5) WITHIN GROUP 
(ORDER BY net_weight) OVER (PARTITION BY product_class_id)" is a window 
aggregate (applied to an aggregate). Therefore Calcite should represent it as a 
{{{}RexOver{}}}. And unparse it to BigQuery as "SELECT 
PERCENTILE_CONT(product_id, 0.5) OVER (PARTITION BY product_class_id ORDER BY 
net_weight)".

However, the common case is the ISO SQL "SELECT PERCENTILE_CONT( 0.5) WITHIN 
GROUP (ORDER BY net_weight)" and I would prefer to focus on that.

It's a bit difficult to handle complex cases because Calcite cannot execute 
{{PERCENTILE_CONT}} or {{PERCENTILE_DISC}}, therefore we can't write end-to-end 
tests and compare them to (say) Postgres.

> BigQuery PERCENTILE functions are unparsed incorrectly
> ------------------------------------------------------
>
>                 Key: CALCITE-5955
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5955
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Tanner Clary
>            Assignee: Tanner Clary
>            Priority: Major
>              Labels: pull-request-available
>
> Currently if you have a query like:
> {{SELECT PERCENTILE_CONT(x, .5) OVER() FROM x;}} the {{OVER()}} clause gets 
> unparsed with a {{window frame clause}} which BigQuery defines 
> [here|https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls#def_window_frame].
>  
> From the docs: "Only aggregate analytic functions can use a window frame 
> clause."
> This causes BigQuery to fail with the following error: {{Window framing 
> clause is not allowed for analytic function percentile_cont}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to