Предположим, у меня есть следующая таблица:SQL Group с использованием первых N элементов в каждой группе
+------------+---------+
| MovieId | rating |
+------------+---------+
| 1 | 4 |
| 1 | 3 |
| 1 | 2 |
| 1 | 4 |
| 1 | 5 |
| 2 | 3 |
| 2 | 4 |
| 2 | 2 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
| 3 | 5 |
| 4 | 4 |
| 4 | 2 |
+------------+---------+
Я хотел бы получить среднее по группе, но используя первые 2 элемента по каждой группе.
Пример:
+------------+---------+
| MovieId | rating |
+------------+---------+
| 1 | 4 |
| 1 | 3 |
| 2 | 3 |
| 2 | 4 |
| 3 | 1 |
| 3 | 2 |
| 4 | 4 |
| 4 | 2 |
+------------+---------+
ответ ожидается:
+------------+---------+
| MovieId | AVG |
+------------+---------+
| 1 | 3.5 |
| 2 | 3.5 |
| 3 | 1.5 |
| 4 | 3 |
+------------+---------+
Это запрос SQL я должен получить AVG для всех фильмов. Но, как я сказал, я хотел бы использовать только первые 2 элемента для каждой группы.
SELECT movieid, AVG(cast(rating as DECIMAL(10,2))) AS AVG FROM ratings group by movieid
Если вы можете помочь мне сделать SQL я ценю. Я также буду использовать Linq на случай, если некоторые из вас это узнают.
Первые два элемента на основе чего? –
только первые n элементов в каждой группе. – 2013-04-21 03:32:23