Re: an difficult SQL - Mailing list pgsql-general

From Rafal Pietrak
Subject Re: an difficult SQL
Date
Msg-id f8bb7ecf-11bd-a271-a74d-9fd3032eb912@ztk-rp.eu
Whole thread Raw
In response to Re: an difficult SQL  (Erik Wienhold <ewie@ewie.name>)
List pgsql-general
Great, with a little tweaking (to get the remaining rows ordered 
correctly), this did the job.

Thank you Erik.

BR

-R

W dniu 6.11.2022 o 15:23, Erik Wienhold pisze:
>> On 06/11/2022 13:48 CET Rafal Pietrak <rafal@ztk-rp.eu> wrote:
>>
>> W dniu 5.11.2022 o 19:05, Thiemo Kellner pisze:
>>>
>>> You first could select the three users with the most recent entries with
>>> a windowing function
>>> (https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS)
>>
>> surely I'm missing something crucial here:
>> select row_number() over w,* from eventlog where row_number() over w < 5
>>    window w as (partition by user);
>> ERROR:  window functions are not allowed in WHERE
>>
>> So I'm unable to pick a limited number of rows within the user
>> "group-window" ranges.
>>
>> Without that, I cannot proceed.
>>
>> Any suggestions?
> 
> Windows functions are only permitted in SELECT and ORDER BY because they are
> executed after WHERE, GROUP BY, and HAVING[1].
> 
> You need a derived table to filter on row_number:
> 
>      with
>      ranked as (
>          select *, row_number() over w
>          from eventlog
>          window w as (partition by user)
>      )
>      select *
>      from ranked
>      where row_number < 5;
> 
> [1] https://www.postgresql.org/docs/15/tutorial-window.html
> 
> --
> Erik
> 
> 



pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: server process (PID 2964738) was terminated by signal 11: Segmentation fault
Next
From: Siddharth Jain
Date:
Subject: Re: Some questions about Postgres