gpt4 book ai didi

sql - PostgreSQL/plpython : how compare two columns from different table in loop

转载 作者:行者123 更新时间:2023-11-29 13:32:22 25 4
gpt4 key购买 nike

我在循环中遇到问题,我必须比较不同表之间的列。

我有两个表 year2004year2005。两者都包含月份编号和该月份的金额。我想比较两个表中的金额并生成第三个表 year,其中包含月数和该月的最大金额。

例如,我在 2004 年有 100 个,在 2005 年有 200 个,所以我必须返回值(2005,number_of_month,200)。你有解决这个问题的想法吗?

附言。对不起我的写作错误,我几年前才学过英语:)

最佳答案

猜测您正试图找出这两年中每个月的最大金额

如果您的数据都在一个包含 date 列的 monthly_statistics 表中,这会容易得多。然后它只是一个简单的聚合函数或一个窗口。

所以让我们把两个表合二为一。

给定样本数据:

CREATE TABLE year2004 ( month int primary key, amount int);
INSERT INTO year2004 (month, amount)
VALUES (1, 50), (2, 40), (3, 60), (4, 80), (5, 100), (6, 800), (7, 20), (8, 40), (9, 30), (10, 40), (11, 50), (12, 99);

CREATE TABLE year2005 ( month int primary key, amount int);
INSERT INTO year2005 (month, amount)
VALUES (1, 88), (2, 44), (3, 11), (4, 123), (5, 12), (6, 88), (7, 21), (8, 19), (9, 44), (10, 89), (11, 4), (12, 42);

我们可以连接表格,也可以按日期将其转换为单个表格,然后对其进行过滤。以下是我们如何生成包含以下内容的单个表格:

SELECT DATE '2004-01-01' + month * INTERVAL '1' MONTH AS sampledate, amount
FROM year2004
UNION ALL
SELECT DATE '2005-01-01' + month * INTERVAL '1' MONTH, amount
FROM year2005;

如果您要创建一个新表,这就是您要使用的,但是如果您不关心实际日期,只关心月份,您可以简单地合并所有两个表:

WITH samples AS (
SELECT month, amount
FROM year2004
UNION ALL
SELECT month, amount
FROM year2005
)
SELECT month, max(amount) AS amount
FROM samples
GROUP BY 1
ORDER BY month;

samplemonth | amount
-------------+--------
5 | 123
11 | 89
1 | 99
2 | 88
3 | 44
9 | 40
4 | 60
6 | 100
10 | 44
12 | 50
7 | 800
8 | 21
(12 rows)

关于sql - PostgreSQL/plpython : how compare two columns from different table in loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com