我有一个表格,可以根据100个用户每小时存储一个网站的值。每个用户每小时都在那里,但可能有更高/更低的值。
我想找到行之间的最大差异并输出它们。
mysql_query("SELECT `username`,`energy` FROM `hoflevel`");
我知道我可以遍历每个用户的所有行并找到最高值,但这是太多的代码。我确信有一种方法可以找出两行之间的最大差异,按用户名分组。它不必每小时一次。这就像是一个“ Alan昨天凌晨5点创造了345,048能量的记录!”。
答案 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在连接条件中为>=
。