Get the App
SLTechnology News&Howtos  ›  Database  › 

How to implement group by range in postgresql

Shulou Source: shulou.com Published: 2022-05-31 13:49:48 10月03日 Update

Editor to share with you how to achieve group by range in postgresql, I believe that most people do not know much about it, so share this article for your reference, I hope you can learn a lot after reading this article, let's go to know it!

Set up a test table

Testdb=# CREATE TEMP TABLE team (

Id serial

Name text

Birth_year integer

Salary integer

);

Insert record

Testdb=# INSERT INTO team (name, birth_year, salary)

VALUES ('Gabriel', 1970, 44000)

('Tom', 1972, 36000)

('Bill', 1978, 39500)

('Bob', 1980, 29000)

('Roger', 1976, 26800)

('Lucas', 1965, 56900)

('Jerome', 1984, 33500)

('Andrew', 1992, 41600)

('John', 1991, 40000)

('Paul', 1964, 39400)

('Richard', 1986, 23000)

('Joseph', 1988, 87000)

('Jason', 1990, 55000)

Query result

Testdb=# WITH series AS (

SELECT generate_series (1950, 2000, 10) AS time_start-- 1950 = min, 2010 = max, 10 = 10 year interval

), range AS (

SELECT time_start, (time_start + 9) AS time_end FROM series-- 9 = interval (10 years) minus 1

)

SELECT time_start, time_end

(SELECT count (*) FROM team WHERE birth_year BETWEEN time_start AND time_end) as team_members

Round ((SELECT AVG (salary) FROM team WHERE birth_year BETWEEN time_start AND time_end), 2) as salary_avg

(SELECT MIN (salary) FROM team WHERE birth_year BETWEEN time_start AND time_end) as salary_min

(SELECT MAX (salary) FROM team WHERE birth_year BETWEEN time_start AND time_end) as salary_max

FROM range

Output result:

Time_start | time_end | team_members | salary_avg | salary_min | salary_max

-+-

1950 | 1959 | 0 |

1960 | 1969 | 2 | 48150.00 | 39400 | 56900

1970 | 1979 | 4 | 36575.00 | 26800 | 44000

1980 | 1989 | 4 | 43125.00 | 23000 | 87000

1990 | 1999 | 3 | 45533.33 | 40000 | 55000

2000 | 2009 | 0 |

(6 rows)

Testdb=#

These are all the contents of the article "how to achieve group by range in postgresql". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!

Tags: Articles content results not so much most more knowledge industry information information channels channels references learning help query testing output Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Shulou Information OPPO Reno Shulou Tech Info macOS Redmi