[ https://issues.apache.org/jira/browse/CALCITE-6894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17938610#comment-17938610 ]
Zhen Chen commented on CALCITE-6894: ------------------------------------ Comparison Between Calcite's {{FILTER (WHERE)}} and ClickHouse's {{-If}} Syntax # Calcite Syntax: {{sum("shelf_width") FILTER (WHERE "net_weight" > 0)}}, This is standard *SQL:2003* syntax for *conditional aggregation*. # ClickHouse Syntax: {{sumIf(}}shelf_width{{, }}net_weight{{> 0E0)}}, ClickHouse doesn't directly support {{FILTER (WHERE)}}, instead using the *{{-If}} combinator* for conditional aggregation. # Why This Conversion Works * *Logical Equivalence*: Both expressions mean *"sum only rows meeting the condition"* * *Syntax Differences*: ||Calcite (SQL Standard)||ClickHouse|| |{{sum(x) FILTER (WHERE cond)}}|{{sumIf(x, cond)}}| |Uses {{FILTER}} clause|Uses {{-If}} combinator| |Supported by PostgreSQL, DuckDB, etc.|ClickHouse-specific syntax| # Equivalent Conversions for Other Functions * {{avg(x) FILTER (WHERE cond)}} → {{avgIf(x, cond)}} * {{count(x) FILTER (WHERE cond)}} → {{countIf(x, cond)}} * {{max(x) FILTER (WHERE cond)}} → {{maxIf(x, cond)}} > ClickHouse dialect can support another form of writing aggFilterWhere > --------------------------------------------------------------------- > > Key: CALCITE-6894 > URL: https://issues.apache.org/jira/browse/CALCITE-6894 > Project: Calcite > Issue Type: Improvement > Reporter: Zhen Chen > Assignee: Zhen Chen > Priority: Major > Labels: pull-request-available > > Like this: > Calcite: > {code:java} > sum("shelf_width") filter (where "net_weight" > 0) {code} > ClickHouse: > {code:java} > sumIf(`shelf_width` , `net_weight` > 0E0) {code} > ref: > [https://clickhouse.com/docs/sql-reference/aggregate-functions/combinators#-if] > -- This message was sent by Atlassian Jira (v8.20.10#820010)