postgresql中如何实现group by range
admin
2023-05-21 13:42:37
0
  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=#

相关内容

热门资讯

抽水马桶水箱不进水的解决办法 步骤一、准备小刷子或是其他清洁工具;步骤二、打开水箱盖子;步骤三、将水箱的堵塞和污渍清理干净;步骤四...
马桶抽水后不停的流水怎么办 解决方法:水箱材质的问题,将马桶水箱拆分开来,一个一个逐一进行检查看是马桶水箱里面的零件是否完好,及...
马桶后面的抽水泵坏了怎么办 换一个新的。方法:先将坏的抽水泵拆卸下,把水箱下方的进水关闭,再通过扳手,一只手扶着水箱当中的进水阀...
冰箱生蛆冰箱还能要吗 可以要的,生蛆的原因是食物存放太久导致腐烂,以及冰箱温度调节有误;冰箱保鲜室的温度要控制在0~10度...
吕美拉门多少钱可以买到- 回复者:安徽富邦装饰工程设计有限公司 安徽富邦装饰为您解答 门的话看尺寸,看您选的材料,不同的材料价...
邯郸中院通报“女子信访遭执行局... 8月4日,河北邯郸市中级人民法院发布情况通报:针对网上反映丛台区人民法院执行局局长郭红波相关问题,我...
蓝凌星通完成数千万元股权融资,... 北京蓝凌星通科技有限公司(简称:蓝凌星通)是专注卫星通信硬科技研发的企业,以自主研发的"超低功耗终端...
嫦娥六号月壤新发现:月球正面、... 观点网讯:2026年7月,我国科研团队依托嫦娥六号带回的1935克月背土壤样本,给出了部分答案。 团...
AI接连推翻数学猜想,人类还能... “本届菲尔兹奖,将是人类最后一次拿下这项数学最高荣誉?”这个论断你相信吗?在王虹、邓煜历史性拿下菲尔...
全球AI大抛售,泡沫破了吗? 今年,“最好的夏天”无疑也是“最残酷的夏天”。 全球人工智能主题大抛售——在美股市场,科技股暴跌,“...