Re: FIRST_VALUE argument must appear in group by? - Mailing list pgsql-general

From David G. Johnston
Subject Re: FIRST_VALUE argument must appear in group by?
Date
Msg-id CAKFQuwaqV3fPAvR8T4ysRTPT-RSsmmqxvJFeLdKR1UpFK1sODQ@mail.gmail.com
Whole thread Raw
In response to Re: FIRST_VALUE argument must appear in group by?  (Guyren Howe <guyren@gmail.com>)
Responses Re: FIRST_VALUE argument must appear in group by?
List pgsql-general
On Tue, May 17, 2016 at 12:04 AM, Guyren Howe <guyren@gmail.com> wrote:
On May 16, 2016, at 20:48 , David G. Johnston <david.g.johnston@gmail.com> wrote:

On Monday, May 16, 2016, Guyren Howe <guyren@gmail.com> wrote:
I have this SELECT clause as part of a larger query:
FIRST_VALUE(drs.id) OVER (PARTITION BY drs.order_ID ORDER BY drs.position ASC) AS current_drs_id
Seems reasonable to me: group and sort the fields in this table and give me the first value.

But I get "column "drs.id" must appear in the GROUP BY clause or be used in an aggregate function".

Huh?

The larger query would help…

SELECT
o.id,
os.status AS status,
o.status_updated_at,
o.should_hold_at_airlines,
(SELECT drs2.id FROM delivery_route_segments drs2 WHERE drs2.order_id = o.id AND NOT drs2.completed ORDER BY drs2.position LIMIT 1) AS current_drs_id,


FROM
orders o JOIN
order_statuses os ON (o.status = os.id) JOIN
delivery_route_segments drs ON (drs.order_id = o.id) JOIN
pick_up_addresses pua ON (pua.order_id = o.id)
GROUP BY
o.id, os.status
I would prefer to do the subquery as a window function, both because that is cleaner to read and also because I believe it is likely to be more efficient.


​This query is non-functional.  It has a GROUP BY without any aggregate functions and not all of the selected columns are in the group by.

David J.

pgsql-general by date:

Previous
From: "Charles Clavadetscher"
Date:
Subject: Re: Ascii Elephant for text based protocols - Final function proposal
Next
From: Albe Laurenz
Date:
Subject: Re: PG wire protocol question