postgresql中如何实现groupbyrange

小编给大家分享一下postgresql中如何实现group by range,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联建站是一家专业提供义马企业网站建设,专注与做网站、成都网站设计、H5响应式网站、小程序制作等业务。10年已为义马众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

  1. 建立测试表

testdb=# CREATE TEMP TABLE team (
id serial,
name text,
birth_year integer,
salary integer
);

  1. 插入记录

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);

  1. 查询结果

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;

输出结果:

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=#

以上是“postgresql中如何实现group by range”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享文章:postgresql中如何实现groupbyrange
本文地址:http://bzwzjz.com/article/gjjsih.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 重庆企业网站建设 成都网站制作 手机网站制作 移动网站建设 成都网站设计 成都企业网站设计 成都定制网站建设 营销网站建设 成都网站建设公司 专业网站设计 手机网站建设 手机网站制作 成都h5网站建设 成都网站设计 成都网站制作 网站制作公司 成都网站建设 成都网站制作 成都模版网站建设 网站制作报价 企业网站设计