Как вывести первые три максимальные позиции в каждой группе?

CD_Ignatoff

Новичок
Как вывести первые три максимальные позиции в каждой группе?

Есть база:
item_group - группа_товара
item_id - товар
price - цена товара

Максимальная цена товара в группе -
SELECT item_id,item_group, MAX (price)
FROM shop
GROUP BY item_group;
Как вывести первые три максимальные ценовые позиции в каждой группе товара?
--------------------------------------------------
Заранее благодарен.
 

alpine

Новичок
Накалбасил вот что:
[sql]
SET @cnt:=0, @tmp='';
SELECT *, @cnt:=IF(@tmp=userident,@cnt+IF(@cnt<=3 AND @tmp=userident, 1, 0), 0) as flag, @tmp:=userident FROM `_rdnload` ORDER BY userident,`download` DESC;
[/sql]
userident = item_group
download = price
_rdnload = shop
--------
Запрос возвращает все записи с полем флаг для первых четырех максимальных значений в группе 0,1,2,3 и 4ка для всех остальных ... пока мысля остановилась, может она и не в том направлении пошла ... :D
 

alpine

Новичок
Даже траву не курил :confused: .Добавил HAVING и работает. :D
[sql]
SET @cnt := 0, @tmp = '';
SELECT *, @cnt:=IF(@tmp=userident,@cnt+IF(@cnt<=3 AND @tmp=userident, 1, 0), 0) as flag, @tmp:=userident as prev_userident FROM `rdnload` HAVING (IF(@tmp=userident,@cnt+IF(@cnt<=3 AND @tmp=userident, 1, 0), 0))<3 ORDER BY userident,`download` DESC;
[/sql]
 
Сверху