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

Julian Hyde edited comment on CALCITE-7595 at 6/10/26 9:35 PM:
---------------------------------------------------------------

DuckDB agrees with you.
{code:java}
select ename, job, hiredate,
  avg(sal) over (order by hiredate rows 3 preceding) as avg_sal,
  avg(sal) filter (where job = 'MANAGER') over (order by hiredate rows 3 
preceding)
    as avg_mgr_sal
from emp
order by hiredate;
┌─────────┬───────────┬────────────┬────────────────┬────────────────┐
│  ename  │    job    │  hiredate  │    avg_sal     │  avg_mgr_sal   │
│ varchar │  varchar  │    date    │     double     │     double     │
├─────────┼───────────┼────────────┼────────────────┼────────────────┤
│ SMITH   │ CLERK     │ 1980-12-17 │ 800.0          │ NULL           │
│ ALLEN   │ SALESMAN  │ 1981-02-20 │ 1200.0         │ NULL           │
│ WARD    │ SALESMAN  │ 1981-02-22 │ 1216.666666667 │ NULL           │
│ JONES   │ MANAGER   │ 1981-04-02 │ 1656.25        │ 2975.0         │
│ BLAKE   │ MANAGER   │ 1981-05-01 │ 2168.75        │ 2912.5         │
│ CLARK   │ MANAGER   │ 1981-06-09 │ 2381.25        │ 2758.333333333 │
│ TURNER  │ SALESMAN  │ 1981-09-08 │ 2443.75        │ 2758.333333333 │
│ MARTIN  │ SALESMAN  │ 1981-09-28 │ 2012.5         │ 2650.0         │
│ KING    │ PRESIDENT │ 1981-11-17 │ 2550.0         │ 2450.0         │
│ FORD    │ ANALYST   │ 1981-12-03 │ 2687.5         │ NULL           │
│ JAMES   │ CLERK     │ 1981-12-03 │ 2550.0         │ NULL           │
│ MILLER  │ CLERK     │ 1982-01-23 │ 2562.5         │ NULL           │
│ SCOTT   │ ANALYST   │ 1987-04-19 │ 2062.5         │ NULL           │
│ ADAMS   │ CLERK     │ 1987-05-23 │ 1587.5         │ NULL           │
└─────────┴───────────┴────────────┴────────────────┴────────────────┘
  14 rows                                                  5 columns {code}


was (Author: julianhyde):
DuckDB agrees with you.
{code:java}
select ename, job, hiredate,
  avg(sal) over (order by hiredate rows 3 preceding) as avg_sal,
  avg(sal) filter (where job = 'MANAGER') over (order by hiredate rows 3 
preceding)
    as avg_mgr_sal
from emp
order by hiredate;
┌─────────┬───────────┬────────────┬────────────────────┬────────────────────┐
│  ename  │    job    │  hiredate  │      avg_sal       │    avg_mgr_sal     │
│ varchar │  varchar  │    date    │       double       │       double       │
├─────────┼───────────┼────────────┼────────────────────┼────────────────────┤
│ SMITH   │ CLERK     │ 1980-12-17 │ 800.0              │ NULL               │
│ ALLEN   │ SALESMAN  │ 1981-02-20 │ 1200.0             │ NULL               │
│ WARD    │ SALESMAN  │ 1981-02-22 │ 1216.6666666666667 │ NULL               │
│ JONES   │ MANAGER   │ 1981-04-02 │ 1656.25            │ 2975.0             │
│ BLAKE   │ MANAGER   │ 1981-05-01 │ 2168.75            │ 2912.5             │
│ CLARK   │ MANAGER   │ 1981-06-09 │ 2381.25            │ 2758.3333333333335 │
│ TURNER  │ SALESMAN  │ 1981-09-08 │ 2443.75            │ 2758.3333333333335 │
│ MARTIN  │ SALESMAN  │ 1981-09-28 │ 2012.5             │ 2650.0             │
│ KING    │ PRESIDENT │ 1981-11-17 │ 2550.0             │ 2450.0             │
│ FORD    │ ANALYST   │ 1981-12-03 │ 2687.5             │ NULL               │
│ JAMES   │ CLERK     │ 1981-12-03 │ 2550.0             │ NULL               │
│ MILLER  │ CLERK     │ 1982-01-23 │ 2562.5             │ NULL               │
│ SCOTT   │ ANALYST   │ 1987-04-19 │ 2062.5             │ NULL               │
│ ADAMS   │ CLERK     │ 1987-05-23 │ 1587.5             │ NULL               │
└─────────┴───────────┴────────────┴────────────────────┴────────────────────┘
  14 rows                                                          5 columns 
{code}

> Support FILTER clause with window functions
> -------------------------------------------
>
>                 Key: CALCITE-7595
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7595
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.42.0
>            Reporter: Yu Xu
>            Assignee: Yu Xu
>            Priority: Major
>             Fix For: 1.43.0
>
>
> Currently Calcite not support FILTER OVER syntax,but PostgreSQL support 
> it:[https://www.postgresql.org/docs/current/sql-expressions.html]
> SQL
> {code:java}
> SELECT COUNT(*) FILTER (WHERE x > 5) OVER (PARTITION BY deptno) FROM t; {code}
> error
> {code:java}
> -- ERROR: SqlValidatorException: OVER must be applied to aggregate function 
> {code}
> Maybe we can improve the filter over support.



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

Reply via email to