2011-01-24 2 views
1

У меня есть временная таблица внутри SQL sproc (используется для поиска), столбцы - это ProductID, CategoryID и WeightRank.Выберите категорию высшего разряда SQL

Из этой таблицы мне нужно получить идентификатор категории с самым высоким весовым коэффициентом. Я изо всех сил пытаюсь понять синтаксис, любая помощь будет любезно оценена.

Примечание: В таблице temp есть много продуктов с одинаковым идентификатором категории, мне нужно найти объединенный WeightRank для каждого уникального идентификатора категории и вернуть только [наивысший рейтинг] CategoryID. (Надеюсь, что это имеет смысл?)

+1

Какая СУБД для этого? 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 
Смежные вопросы