выберите 10 строк с наименьшей разницей во времени в sql - PullRequest
0 голосов
/ 03 октября 2010

Я использую sql-сервер 2005

Привет, у меня есть таблица пользователей с идентификатором пользователя и регистрационной датой. Я хочу выбрать кратчайший период времени между двумя регистрационными датами, когда первая дата равна x, а другая строка - x + 10 строк. Я не против курсора, потому что я буду запускать этот запрос время от времени.

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

спасибо

1 Ответ

1 голос
/ 03 октября 2010

Попробуйте этот запрос, если вы используете SQL Server 2005 или новее:

WITH T1 AS (
    SELECT
        userID,
        registrationDate,
        ROW_NUMBER() OVER (ORDER BY registrationDate) AS rn
    FROM Users
), T3 AS (
    SELECT
        T1.registrationDate AS interval_start,
        T2.registrationDate AS interval_end,
        T1.registrationDate - T2.registrationDate AS diff
    FROM T1
    JOIN T1 T2
   ON T1.rn = T2.rn + 5
)
SELECT TOP 1 interval_start, interval_end
FROM T3
ORDER BY diff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...