繁体   English   中英

在给定可能重复的表中选择前100个最大值

[英]Selecting Top 100 Largest Values In A Table Given Possible Duplicates

我有一个具有以下结构的表 - steamid,itemid,eventid,value,所有int int或big int,记录我插入的每小时数据。 因此,用户很可能具有多个具有相同steamid,itemid甚至值的条目。

我正试图获得100个最高价值 - 但同样的项目不得重复。

到目前为止我所拥有的是什么

SELECT itemid,value,steamid 
FROM $table 
GROUP BY itemid 
ORDER BY value DESC 
LIMIT 0,100

这给了我这个数据集(这里只有样本):

itemid      value   steamid
=================================================
599291414   66397   76561198032389066
779150329   62882   76561198001229760
773965297   51895   76561198014617403
332883551   43201   76561197992659494
333434836   40880   7656119799359013

但是,由于某种原因,这会忽略表中列出的真正最大值。 我不知道我怎么能格式化这个以便我可以忽略具有相同itemid和steamid的重复条目。 我不认为我可以通过steamid进行分组,因为它会忽略可能与steamid关联的其他项目。

如果我选择没有分组,这是前几个。

 itemid     value   steamid
 =====================================
 1011809265 753665  76561198010314894
 376615188  101684  76561197989760193
 478937438  83448   76561198010314894
 478937438  83448   76561198010314894
 376662587  72693   76561197989760193
 376662587  72693   76561197989760193
 599291414  66454   76561198032389066
 599291414  66454   76561198032389066
 599291414  66454   76561198032389066

洞察力很高兴,我很乐意回答任何可能有助于解决这个问题的问题。

尝试

SELECT * FROM (

  SELECT itemid,value,steamid FROM $table GROUP BY itemid ORDER BY value DESC
) as tbl1

GROUP BY itemid, value

LIMIT 0,100

这应该是唯一的itemid,但是后来只给你单个值。

尝试添加区别。

SELECT DISTINCT itemid, value, steamid 
FROM $table 
ORDER BY value DESC 
LIMIT 0,100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM