数据库中有这样一张表,其中包含以百分比表示的月收益率
create table profits_month
(
column_1 integer not null,
year varchar not null,
month varchar not null,
profit_loss double precision not null
);
测试数据:
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (1, '2021', 'april', 2);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (2, '2021', 'may', 6);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (3, '2021', 'june', 1);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (4, '2021', 'july', 7);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (5, '2021', 'august', 0);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (6, '2021', 'semptember', -2);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (7, '2021', 'october', 15);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (8, '2021', 'november', 7);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (9, '2021', 'december', -1);
INSERT INTO public.profits_month (column_1, year, month, profit_loss) VALUES (10, '2022', 'january', 5);
- 问题是如何进行sql查询,使最终结果为以下形式:
上个月,三个月等的条件结果。
| 月数 | summa_itogo |
|---|---|
| 十 | 40 |
| 3 | 十一 |
| 一 | 5 |
任务并不完全清楚,示例中的 10 个月意味着恰好 10 个月或数据库中数据的最大值。此外,两列年份和月份名称不允许您人工使用它们(最好将字段保留为日期、所需月份和年份的第一天)。因此,您必须依赖 column_1 列并希望它增长。
有了这些保留,问题应该解决如下:
使用窗口函数,我们选择月数和累计总额。以及总行数。在外部查询中,我们从获得的结果中只留下记录 1、3 和“for all time”。