Выбор 3 сообщений тела лучших пользователей репутации на Stackexchange-SQL
Мне нужен запрос, чтобы получить результаты из набора данных StackExchange таким образом, что он возвращает мне 100 лучших пользователей репутации с не более чем 3 сообщениями (тело сообщения) для каждого пользователя. Таблицы выглядят так:
Пользователи: (id, репутация) Сообщения: (id, OwnerUserId, body)
Я написал следующий запрос:
SELECT top 100
ROW_NUMBER() OVER(ORDER BY u.Reputation DESC) AS rank,
u.Id AS [User Link], u. Reputation, p.Body
from
Users u
inner join Posts p on p.OwnerUserId = u.Id
ORDER BY
u.Reputation DESC
он возвращает все сообщения каждого пользователя, но то, что я хочу, чтобы получить только 3 сообщения (тело) каждого пользователя. Пожалуйста, помогите!
У вопроса есть решение - Посмотреть?

Так что это не служба написания кода. Что именно удерживает вас от написания запроса?
Источник

Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что ОП не пытался решить проблему сам.
Источник

Мне жаль, что Дэн Брачук и Рене Фогт, я пытаюсь сам решить эту проблему, как вы можете видеть мой запрос выше (я добавил запрос в вопрос), и я пробовал много разных запросов, но не смог решить проблему.
Источник
Ответы - Выбор 3 сообщений тела лучших пользователей репутации на Stackexchange-SQL / Selecting 3 posts bodies of top reputation Users on Stackexchange-SQL

21.03.2017 03:20:24
вы можете использовать cross apply()
:
select
u.rank
, u.Id as [User Link]
, u.Reputation
, p.Body
from (
select top 100 *
, row_number() over (
order by u.Reputation desc
) as rank
from Users u
order by u.Reputation desc
) as u
cross apply (
select top 3
p.body
from Posts p
where p.OwnerUserId = u.Id
) p
order by u.Reputation desc
демо: https://data.stackexchange.com/stackoverflow/revision/645393/805819/

Человек Ты ангел! ты спас мне жизнь. Это работает как шарм. Единственное, чего я не понимаю, это то, что топ-пользователи-это Роберт Харви, Карл Билефельдт, Арсений, ..., но этот запрос показывает мне разных топ-пользователей

@SaqibIqbal вам, вероятно, потребуется переключить сайт на целевой сайт stackexchange по вашему выбору. Существует поле между запросом и результатами, которое позволяет вам сделать это.

Большое спасибо...ваш ответ работает отлично

Да я собираюсь принять этот ответ
Помочь в развитии проекта: