Re: BUG #15143: Window Functions – Paranthese not allowed before OVER term

From: David Vakili <david(at)daily-harvest(dot)com>
To: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15143: Window Functions – Paranthese not allowed before OVER term
Date: 2018-04-09 15:21:26
Message-ID: CAD6RYzZM1Pp4M3WfOe8pOpkPO9D+TzVdCMfHfWg6CApiV9__NQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thank you David and David!!

I realized it's simpler to create separate variables (ex, Sum(x) and
SUM(Y)) and put them in an inner table. It's one of those things you look
at with new fresh eyes the next days and it just makes sense.

Appreciate the help!

On Wed, Apr 4, 2018 at 11:02 PM, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
wrote:

> On 5 April 2018 at 14:40, David G. Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>
> wrote:
> > On Wed, Apr 4, 2018 at 7:32 PM, David Rowley <
> david(dot)rowley(at)2ndquadrant(dot)com>
> > wrote:
> >>
> >> > Working as documented:
> >> >
> >> > "A window function call always contains an OVER clause directly
> >> > following
> >> > the window function's name and argument(s)"
> >>
> >> Yeah, how else would the window function know which window clause it
> >> belongs to?
> >>
> >> If you'd done: SELECT (LEAD(col) - LAG(col)) OVER (...) could
> >> PostgreSQL just assume that you meant to link both the lead and lag to
> >> the same over clause?
> >
> >
> > Well, if there is only a single aggregate function in the expression
> there
> > isn't any ambiguity. If there happened to be more than one the system
> could
> > emit a parsing error saying as much. While likely more user-friendly I
> > don't imagine its worth the headache in the parser.
>
> Perhaps, but I guess it would be pretty hard to know what's an
> aggregate and what's a window function when there are multiple.
>
> Consider:
>
> SELECT (SUM(x) - SUM(y)) OVER w1 FROM t WINDOW w1 AS (...);
>
> Is SUM(x) an aggregate or a window function? how about SUM(y)? one of
> them must be since there's an OVER clause.
>
> OVER is also quite like FILTER, so someone may expect us to also support:
>
> SELECT (SUM(x) - SUM(y)) FILTER(WHERE x > 0) FROM t;
>
> So I think we're pretty good to leave this untouched.
>
> --
> David Rowley http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-04-09 16:52:24 BUG #15147: first time here
Previous Message PG Bug reporting form 2018-04-09 11:28:25 BUG #15146: missing yum package: pgadmin4-python-simplejson