2011-01-24 52 views
1

我在SQL sproc(用于搜索)中有一个临时表,这些列是ProductID,CategoryID和WeightRank。选择排名最高的类别SQL

从这张表中我需要得到WeightRank最高的CategoryID。 我很努力地想法的语法,任何帮助将不胜感激。

注:临时表中有许多产品相同的类别ID,我需要找到每一个独特的类别ID组合WeightRank并返回刚刚[最高排名]类别ID。 (希望这是有道理?)

+1

这是哪个DBMS的用途? SQL Server,MySQL,Oracle等? – RichardTheKiwi 2011-01-24 20:33:39

回答

1
select top 1 categoryID 
from #t 
group by categoryID 
order by sum(WeightRank) desc 

也许avg(WeightRank)

+0

简单而正是我需要的,谢谢 – Leigh 2011-01-25 23:44:20

0

标准SQL的解决方案允许多个类别的领带最大

SELECT * 
FROM 
table t 
INNER JOIN 
(
    SELECT 
       SUM(WeightRank) weightRank, category_id 
    FROM 
     table t 
    GROUP by 
     category_id 
) sumRank 
ON t.category_id = sumrank.category_id 
INNER JOIN 

SELECT MAX(weightRank) weightRank 
FROM (  
    SELECT 
       SUM(WeightRank) weightRank, category_id 
    FROM 
     table t 
    GROUP by 
     category_id 
) maxRank 

ON sumRank.weightRank= maxRank.weightRank