我的表名为金额,其中包含 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)
如您所见,我的问题被简化了,因为我使用爱沙尼亚语来表格和列名称,如果我从头开始共享代码,那将会更难帮助...再次感谢所有人。
答案 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;