如何在 PostgresQL 中提取数据?
How to extract data in PostgresSQL?
我有一个基本数据库,我正在尝试提取每个用户的最大 3 个投资买单的 fund_name 和金额。
我基本上等待一个输出行,其中包括:
user_id、fund_name_1、amount_1、fund_name_2、amount_2、fund_name_3、amount_3等
我附上了数据库的图片。
创建的示例数据库:
我尝试了以下但它不起作用
SELECT
user_id,
top_fund(1)
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY fund_name
ORDER BY amount) AS top_funds
FROM investment_buy_order)
WHERE top_funds IN (1,3)
任何帮助都会很棒! (我是SQL的新手)
这与中位数无关。只使用条件聚合:
SELECT user_id,
max(case when seqnum = 1 then fund_name end),
max(case when seqnum = 1 then amount end),
max(case when seqnum = 2 then fund_name end),
max(case when seqnum = 2 then amount end),
max(case when seqnum = 3 then fund_name end),
max(case when seqnum = 3 then amount end)
FROM (SELECT ibo.*
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY amount) AS seqnum
FROM investment_buy_order ibo
) ibo
GROUP BY user_id;
我有一个基本数据库,我正在尝试提取每个用户的最大 3 个投资买单的 fund_name 和金额。 我基本上等待一个输出行,其中包括: user_id、fund_name_1、amount_1、fund_name_2、amount_2、fund_name_3、amount_3等
我附上了数据库的图片。
创建的示例数据库:
我尝试了以下但它不起作用
SELECT
user_id,
top_fund(1)
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY fund_name
ORDER BY amount) AS top_funds
FROM investment_buy_order)
WHERE top_funds IN (1,3)
任何帮助都会很棒! (我是SQL的新手)
这与中位数无关。只使用条件聚合:
SELECT user_id,
max(case when seqnum = 1 then fund_name end),
max(case when seqnum = 1 then amount end),
max(case when seqnum = 2 then fund_name end),
max(case when seqnum = 2 then amount end),
max(case when seqnum = 3 then fund_name end),
max(case when seqnum = 3 then amount end)
FROM (SELECT ibo.*
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY amount) AS seqnum
FROM investment_buy_order ibo
) ibo
GROUP BY user_id;