假设我有一个表,它存储每次有人做某件事(比如跳转)的时间
该表有一个JumpNumber (每次插入都会自动递增,因此每次跳转都会有一个,而不是一个总数)。它还记录了作为MemberID跳跃的成员,以及他们跳跃的时间。
我想做一个查询,找到出现次数最多的成员,然后给出他们的ID和他们每次跳过的时间。
然而,如果有2个或更多的成员跳跃最多(因此是平局),它仍然应该显示他们中的每一个,以及他们的跳跃时间。
所以我不能只做降序和限制为1,我也不知道如何找到最频繁出现的成员,我猜是一个计数,但不是100%确定如何找到。
发布于 2014-12-05 15:58:11
嗯,大概是这样的:
SELECT USER_ID
FROM YOURTABLE A
WHERE JUMPS = (SELECT MAX(JUMPS)
FROM YOURTABLE B)这将返回跳转次数最多的所有USER_ID,然后您可以选择所选用户做出某些操作的所有记录
发布于 2014-12-05 16:16:18
如果存储跳转,请使用variant by Xavjer
如果没有存储跳转,则首先需要找到最大计数
select user_id, count(*) as c from TABLE group by user_id order by c desc limit 1之后,您将再次执行相同分组,并选择所有具有计数的user_id,并为其他字段选择左连接原始表。
select A.* from (
select user_id from
(select user_id, count(*) as c from TABLE group by user_id) as tempB
) as tempC where tempC.c=(
select count(*) as c from TABLE group by user_id order by c desc limit 1
)
) as join_table1
LEFT JOIN TABLE as A on A.user_id=join_table1;https://stackoverflow.com/questions/27311266
复制相似问题