我已经在Extract amount for the minimum date in Postgres针对PostgreSQL问了这个问题。本质上,我需要获取每个帐户的最短日期金额。 我已经尝试过
SELECT B.* FROM
(SELECT amount, account, min(date)
FROM new_schema.stg_payment_mysql GROUP BY account
) A INNER JOIN new_schema.stg_payment_mysql B USING (account,date)
但收到“错误代码:1054。”“从子句” 0.781秒中的未知列“日期”。
如果我在日期之前添加new_schema.stg_payment_mysql,则会收到“错误代码:1064”。
我也尝试过:
SELECT amount, account, min(date) date
FROM new_schema.stg_payment_mysql GROUB BY account
但是未正确选择金额。我认为第一个查询是正确的,但我不理解该错误。
答案 0 :(得分:0)
第一个查询几乎是正确的。您忘记为您的分钟(日期)加上别名
SELECT B.*
FROM
(
SELECT account, min(`date`) as mindate
FROM new_schema.stg_payment_mysql
GROUP BY account
) A
INNER JOIN
new_schema.stg_payment_mysql B
ON a.account = b.account and b.`date` = a.mindate
我将date重命名为Mind的原因有两个:一个是避免为列命名一个保留字,另一个是使数据流是什么以及查询的工作方式更明显
您也无需在A中选择金额;它将来自b