在MySQL中提取最短日期的金额

时间:2019-06-24 18:53:24

标签: mysql

我已经在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

但是未正确选择金额。我认为第一个查询是正确的,但我不理解该错误。

1 个答案:

答案 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