Thread: BUG #17961: Incorrect aggregation MIN, AVG, MAX

BUG #17961: Incorrect aggregation MIN, AVG, MAX

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      17961
Logged by:          Maxim Zakharov
Email address:      dp.maxime@gmail.com
PostgreSQL version: 14.8
Operating system:   Ubuntu 22.04.2
Description:

Hello,

I came across a situation when MIN(), AVG() and MAX() aggregates where
computed incorrectly, as you can see from the output below the valuer of
MIN() is higher than AVG() and MAX()!
Expected values should be the same as for MIN()
The table n has all values been updated several times with different values
and currently all rows contain the value of 11.55


$ psql db
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1), server 14.8 (Ubuntu
14.8-1.pgdg22.04+1))
Type "help" for help.

asx=# reindex table n;
REINDEX
asx=# select at, MIN(diluted_earnings_1)::numeric as diluted_earnings_1min,
ROUND(AVG(diluted_earnings)::numeric, 2) as diluted_earnings_1avg,
MAX(diluted_earnings)::numeric as diluted_earnings_1max
from n
where sym like '___     '
group by at
order by at desc limit 1;
     at     | diluted_earnings_1min | diluted_earnings_1avg |
diluted_earnings_1max 
------------+-----------------------+-----------------------+-----------------------
 2023-06-02 |                 11.55 |                 -0.17 |
 -0.17
(1 row)

db=#


Re: BUG #17961: Incorrect aggregation MIN, AVG, MAX

From
Julien Rouhaud
Date:
Hi,

On Sun, Jun 04, 2023 at 10:04:04PM +0000, PG Bug reporting form wrote:
>
> I came across a situation when MIN(), AVG() and MAX() aggregates where
> computed incorrectly, as you can see from the output below the valuer of
> MIN() is higher than AVG() and MAX()!
> Expected values should be the same as for MIN()
> The table n has all values been updated several times with different values
> and currently all rows contain the value of 11.55
>
> asx=# select at, MIN(diluted_earnings_1)::numeric as diluted_earnings_1min,
> ROUND(AVG(diluted_earnings)::numeric, 2) as diluted_earnings_1avg,
> MAX(diluted_earnings)::numeric as diluted_earnings_1max

Unless I'm missing something you're using diluted_earnings_1 for min, but
diluted_earnings for avg and max so it looks like it's working as expected?



Re: BUG #17961: Incorrect aggregation MIN, AVG, MAX

From
Maxim Zakharov
Date:
Hello,

You're right, the SQL query was incorrect. Shame on me! :]

Thank you and sorry for bothering with such a mistake.

On Mon, 5 Jun 2023 at 17:40, Julien Rouhaud <rjuju123@gmail.com> wrote:
Hi,

On Sun, Jun 04, 2023 at 10:04:04PM +0000, PG Bug reporting form wrote:
>
> I came across a situation when MIN(), AVG() and MAX() aggregates where
> computed incorrectly, as you can see from the output below the valuer of
> MIN() is higher than AVG() and MAX()!
> Expected values should be the same as for MIN()
> The table n has all values been updated several times with different values
> and currently all rows contain the value of 11.55
>
> asx=# select at, MIN(diluted_earnings_1)::numeric as diluted_earnings_1min,
> ROUND(AVG(diluted_earnings)::numeric, 2) as diluted_earnings_1avg,
> MAX(diluted_earnings)::numeric as diluted_earnings_1max

Unless I'm missing something you're using diluted_earnings_1 for min, but
diluted_earnings for avg and max so it looks like it's working as expected?


--