MySql组在一个查询中的平均值和组最后一个值

时间:2017-07-29 09:14:38

标签: mysql

我的表名为金额,其中包含 RowId CounterId Amount 列。很容易通过 CounterId 进行分组并获得计数器平均值,但是如果我还希望获得组中 Amount 的最后一个值,要知道它是大于还是小于平均值,我有麻烦了?如何在查询中包含 Amount ,这给了我组中 Amount 的第一个值,这是无用的。也许这很容易做到,但我只用一张桌子找不到问题的答案。我发现,如何通过 RowId 的帮助找到组中的最后一个 Amount ,但如何获得它们 - 平均值和最后一个值 - 对于一个结果,对我来说现在是个谜......先谢谢你。

感谢Ram Bath我构建了我需要的东西,结果就在这里:

SELECT      Kliendid.Id        AS Id,
            Kliendid.Nimi      AS Klient,
            MIN(X.Tarbimine)   AS Piseim,
            AVG(X.Tarbimine)   AS Keskmine,
            MAX(X.Tarbimine)   AS Suureim,
            COUNT(X.Tarbimine) AS Kuid,
            (
              Select Tarbimine 
              from Naidud A 
              where A.Id=MAX(X.Id)
            ) as Viimane 
FROM        Naidud X 
INNER JOIN  Kliendid ON Kliendid.ID=X.Klient
INNER JOIN  Mooturid ON Mooturid.ID=X.Mootur
WHERE       X.Tarbimine>0
     AND    X.Aeg>'2015-12-31'
     AND    Mooturid.Kasutusel=1
GROUP BY    X.Mootur
HAVING      Kuid>5
     AND    (Viimane=Piseim OR Viimane=Suureim)

如您所见,我的问题被简化了,因为我使用爱沙尼亚语来表格和列名称,如果我从头开始共享代码,那将会更难帮助...再次感谢所有人。

1 个答案:

答案 0 :(得分:0)

这里我假设你的RowId是唯一的或者是主键。

SELECT RowId,AVG(AmountId) as Average_Amount,(Select Amount from Amounts a where a.RowId=MAX(X.RowId)) as LastAmount from Amounts X Group by X.CounterId;