找到两行之间的最大差异

时间:2012-01-11 00:09:55

标签: mysql rows max

我有一个表格,可以根据100个用户每小时存储一个网站的值。每个用户每小时都在那里,但可能有更高/更低的值。

我想找到行之间的最大差异并输出它们。

mysql_query("SELECT `username`,`energy` FROM `hoflevel`");

我知道我可以遍历每个用户的所有行并找到最高值,但这是太多的代码。我确信有一种方法可以找出两行之间的最大差异,按用户名分组。它不必每小时一次。这就像是一个“ Alan昨天凌晨5点创造了345,048能量的记录!”。

1 个答案:

答案 0 :(得分:3)

这会在每个用户energy中获得最大差异,忽略只有一条记录的用户:

SELECT hoflevel.username, MAX(hoflevel.energy-h.energy) as maxDiff 
FROM hoflevel 
LEFT JOIN hoflevel h 
ON h.username=hoflevel.username AND hoflevel.energy>=h.energy
WHERE h.energy IS NOT NULL
GROUP BY hoflevel.username;

基本上,它会在hoflevel上将username加入自身,从而生成一个包含username的表格以及该用户的每对energy值。

然后计算出username分组的能量之间的最大差异。

注意,您可以通过忽略可能在数据库中有多个记录但每次都相同energy的用户(因此他们的maxDiff为0)来更改{{1在连接条件中为>=