pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: digoal@126.com
Subject: BUG #15082: PostgreSQL 11 dev bug with window range partition by QUERY
Date: Fri, 23 Feb 2018 15:16:39 +0000
Message-ID: <151939899974.1461.9411971793110285476@wrigleys.postgresql.org> (raw)

The following bug has been logged on the website:

Bug reference:      15082
Logged by:          Zhou Digoal
Email address:      digoal@126.com
PostgreSQL version: Unsupported/Unknown
Operating system:   CentOS 7.4 x64
Description:        

```
create table t(
  sid int,     -- 学号
  sub int2,    -- 科目
  des text,    -- 科目描述
  score float4    -- 分数
);


insert into t values 
  (1, 1, '语文', 81),
  (2, 1, '语文', 71),
  (3, 1, '语文', 99),
  (4, 1, '语文', 100),
  (5, 1, '语文', 32),
  (6, 1, '语文', 89),
  (7, 1, '语文', 90.5),
  (1, 2, '数学', 81),
  (2, 2, '数学', 96),
  (3, 2, '数学', 78),
  (4, 2, '数学', 90),
  (5, 2, '数学', 12),
  (6, 2, '数学', 97),
  (7, 2, '数学', 99.5),
  (1, 3, '英语', 100),
  (2, 3, '英语', 95),
  (3, 3, '英语', 95),
  (4, 3, '英语', 95),
  (5, 3, '英语', 56),
  (6, 3, '英语', 87),
  (7, 3, '英语', 93),
  (1, 4, '物理', 60),
  (2, 4, '物理', 60),
  (3, 4, '物理', 65),
  (4, 4, '物理', 65),
  (5, 4, '物理', 65),
  (6, 4, '物理', 71),
  (7, 4, '物理', 71)
;


select 
  *, 
  sum(score) over w1, 
  avg(score) over w1, 
  first_value(score) over w1, 
  last_value(score) over w1 
from t 
  window w1 as (partition by sub order by score::int range between 1
preceding and 6 following) 
order by sub, score;


 sid | sub | des  | score | sum |         avg         | first_value |
last_value 
-----+-----+------+-------+-----+---------------------+-------------+------------
   5 |   1 | 语文 |    32 | 562 | 80.2857142857142857 |          32 |       
100
   2 |   1 | 语文 |    71 | 562 | 80.2857142857142857 |          32 |       
100
   1 |   1 | 语文 |    81 | 562 | 80.2857142857142857 |          32 |       
100
   6 |   1 | 语文 |    89 | 562 | 80.2857142857142857 |          32 |       
100
   7 |   1 | 语文 |    90 | 562 | 80.2857142857142857 |          32 |       
100
   3 |   1 | 语文 |    99 | 562 | 80.2857142857142857 |          32 |       
100
   4 |   1 | 语文 |   100 | 562 | 80.2857142857142857 |          32 |       
100
   5 |   2 | 数学 |    12 | 554 | 79.1428571428571429 |          12 |       
100
   3 |   2 | 数学 |    78 | 554 | 79.1428571428571429 |          12 |       
100
   1 |   2 | 数学 |    81 | 554 | 79.1428571428571429 |          12 |       
100
   4 |   2 | 数学 |    90 | 554 | 79.1428571428571429 |          12 |       
100
   2 |   2 | 数学 |    96 | 554 | 79.1428571428571429 |          12 |       
100
   6 |   2 | 数学 |    97 | 554 | 79.1428571428571429 |          12 |       
100
   7 |   2 | 数学 |   100 | 554 | 79.1428571428571429 |          12 |       
100
   5 |   3 | 英语 |    56 | 621 | 88.7142857142857143 |          56 |       
100
   6 |   3 | 英语 |    87 | 621 | 88.7142857142857143 |          56 |       
100
   7 |   3 | 英语 |    93 | 621 | 88.7142857142857143 |          56 |       
100
   3 |   3 | 英语 |    95 | 621 | 88.7142857142857143 |          56 |       
100
   4 |   3 | 英语 |    95 | 621 | 88.7142857142857143 |          56 |       
100
   2 |   3 | 英语 |    95 | 621 | 88.7142857142857143 |          56 |       
100
   1 |   3 | 英语 |   100 | 621 | 88.7142857142857143 |          56 |       
100
   1 |   4 | 物理 |    60 | 457 | 65.2857142857142857 |          60 |        
71
   2 |   4 | 物理 |    60 | 457 | 65.2857142857142857 |          60 |        
71
   3 |   4 | 物理 |    65 | 457 | 65.2857142857142857 |          60 |        
71
   4 |   4 | 物理 |    65 | 457 | 65.2857142857142857 |          60 |        
71
   5 |   4 | 物理 |    65 | 457 | 65.2857142857142857 |          60 |        
71
   6 |   4 | 物理 |    71 | 457 | 65.2857142857142857 |          60 |        
71
   7 |   4 | 物理 |    71 | 457 | 65.2857142857142857 |          60 |        
71
(28 rows)


select 
  *, 
  sum(score) over w1, 
  avg(score) over w1, 
  first_value(score) over w1, 
  last_value(score) over w1 
from t 
  window w1 as (order by score::int range between 1 preceding and 6
following) 
order by score;

 sid | sub | des  | score | sum |         avg         | first_value |
last_value 
-----+-----+------+-------+-----+---------------------+-------------+------------
   5 |   2 | 数学 |    12 |  12 | 12.0000000000000000 |          12 |        
12
   5 |   1 | 语文 |    32 |  32 | 32.0000000000000000 |          32 |        
32
   5 |   3 | 英语 |    56 | 176 | 58.6666666666666667 |          56 |        
60
   1 |   4 | 物理 |    60 | 315 | 63.0000000000000000 |          60 |        
65
   2 |   4 | 物理 |    60 | 315 | 63.0000000000000000 |          60 |        
65
   3 |   4 | 物理 |    65 | 408 | 68.0000000000000000 |          65 |        
71
   4 |   4 | 物理 |    65 | 408 | 68.0000000000000000 |          65 |        
71
   5 |   4 | 物理 |    65 | 408 | 68.0000000000000000 |          65 |        
71
   6 |   4 | 物理 |    71 | 213 | 71.0000000000000000 |          71 |        
71
   7 |   4 | 物理 |    71 | 213 | 71.0000000000000000 |          71 |        
71
   2 |   1 | 语文 |    71 | 213 | 71.0000000000000000 |          71 |        
71
   3 |   2 | 数学 |    78 | 240 | 80.0000000000000000 |          78 |        
81
   1 |   1 | 语文 |    81 | 249 | 83.0000000000000000 |          81 |        
87
   1 |   2 | 数学 |    81 | 249 | 83.0000000000000000 |          81 |        
87
   6 |   3 | 英语 |    87 | 449 | 89.8000000000000000 |          87 |        
93
   6 |   1 | 语文 |    89 | 647 | 92.4285714285714286 |          89 |        
95
   7 |   1 | 语文 |    90 | 743 | 92.8750000000000000 |          89 |        
96
   4 |   2 | 数学 |    90 | 743 | 92.8750000000000000 |          89 |        
96
   7 |   3 | 英语 |    93 | 670 | 95.7142857142857143 |          93 |        
99
   3 |   3 | 英语 |    95 | 877 | 97.4444444444444444 |          95 |       
100
   2 |   3 | 英语 |    95 | 877 | 97.4444444444444444 |          95 |       
100
   4 |   3 | 英语 |    95 | 877 | 97.4444444444444444 |          95 |       
100
   2 |   2 | 数学 |    96 | 877 | 97.4444444444444444 |          95 |       
100
   6 |   2 | 数学 |    97 | 592 | 98.6666666666666667 |          96 |       
100
   3 |   1 | 语文 |    99 | 399 | 99.7500000000000000 |          99 |       
100
   7 |   2 | 数学 |   100 | 399 | 99.7500000000000000 |          99 |       
100
   4 |   1 | 语文 |   100 | 399 | 99.7500000000000000 |          99 |       
100
   1 |   3 | 英语 |   100 | 399 | 99.7500000000000000 |          99 |       
100
(28 rows)
```

when i use frame clause(range), it's only right when don't use partition by,
and use the whole rows as one partition.

is it a bug?

digoal,
best regards.



view thread (2+ messages)  latest in thread

Message-ID: <151939899974.1461.9411971793110285476@wrigleys.postgresql.org>
Permalink:  ../151939899974.1461.9411971793110285476@wrigleys.postgresql.org/
Also on:    postgresql.org/message-id/151939899974.1461.9411971793110285476@wrigleys.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, digoal@126.com
  Subject: Re: BUG #15082: PostgreSQL 11 dev bug with window range partition by QUERY
  In-Reply-To: <151939899974.1461.9411971793110285476@wrigleys.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox