2011-01-24 3 views
1

SQL sproc(検索に使用)内に一時テーブルがあり、列はProductID、CategoryID、WeightRankです。最高のカテゴリを選択します。SQL

この表から、最も高いWeightRankを持つCategoryIDを取得する必要があります。 私は構文を理解するのに苦労しています、どんな助けも親切に評価されるでしょう。

注:一時テーブルが同じ区分で多くの製品を持っている、私はそれぞれの固有の区分を合わせたWeightRankを見つけて、ちょうど[最高順位] [区分コードを返却する必要があります。 (これは理にかなってホープ?)

+1

これはどのDBMSですか? SQL Server、MySQL、Oracleなど? – RichardTheKiwi

答えて

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

または多分avg(WeightRank)のためにネクタイ複数のカテゴリを可能に?

+0

シンプルで必要なもの、ありがとう – Leigh

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 
関連する問題