2011-01-24 92 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