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://hxwzsj.com/article/gjjsih.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 成都商城网站建设 成都网站设计公司 手机网站制作 达州网站设计 成都网站设计 品牌网站建设 高端网站设计推广 专业网站设计 定制网站制作 营销型网站建设 泸州网站建设 成都网站建设 手机网站建设 成都网站设计制作公司 成都网站制作 营销网站建设 成都网站设计 网站建设开发 成都网站设计 温江网站设计 成都响应式网站建设 重庆网站制作