Получить две лучшие записи для каждого продукта - PullRequest
4 голосов
/ 31 августа 2011

У меня есть таблица с тремя полями, как показано ниже, каждый продукт имеет несколько записей.Мне интересно, как я могу получить топ-2 для каждого продукта?Я уже отсортировал свои записи по временному полю.

eventId productId   time
1       10568       2011-08-30 15:06:57
2       10568       2011-08-30 15:06:56
3       10568       2011-08-30 15:06:53
4       10568       2011-08-30 15:06:50

5       10111       2011-08-30 15:06:56
6       10111       2011-08-30 15:06:53
7       10111       2011-08-30 15:06:50

8       10000       2011-08-30 15:06:56
9       10000       2011-08-30 15:06:53
10      10000       2011-08-30 15:06:50

Может ли какой-нибудь эксперт помочь мне получить две лучшие записи для КАЖДОГО продукта?

Ответы [ 2 ]

2 голосов
/ 31 августа 2011
select * 
from table t 
inner join (select distinct productId as productId from table) table2 
  on (table2.productid = t.productid
where table.time >= (select time from table innertable 
                     where productid = t.productid 
                     order by time desc 
                     limit 1 offset 1) 
0 голосов
/ 31 августа 2011

У меня нет редактора SQL под рукой, но он может выглядеть так:

SELECT * FROM theTable WHERE eventId IN 
    (SELECT TOP(2) eventId FROM theTable as innerTable 
        WHERE innerTable.productId = theTable.productId)

Замените "theTable" на имя вашей таблицы.

...