Задайте правило выбора при одинаковом времени событий
Зачем
Зачем это нужно
Разделите сортировку внутри окна и порядок итоговых строк
Сопоставьте типы дат и параметры запроса с фактической схемой
Вопросы
Частые вопросы
Как запросить последнюю запись на пользователя в T-SQL?
Для SQL Server таблица events(id INT NOT NULL PRIMARY KEY,user_id INT NOT NULL,created_at DATETIME2 NOT NULL). Найди последнюю запись каждого пользователя; при равной дате побеждает больший id. Используй ROW_NUMBER и объясни PARTITION BY и полный ORDER BY. Дай строки (1,7,одна дата), (2,7,та же дата), (3,8,более ранняя дата), ожидаемые id и план локальной проверки. SQL не выполняй.
Что подготовить для разбора запроса SQL Server?
Передайте версию SQL Server, уровень совместимости, схему, SQL и несколько обезличенных строк. Удалите пароли и личные данные из планов. Сначала согласуйте правило равных дат, затем проверяйте запрос и план выполнения на тестовой базе.
Какие id должны остаться после ROW_NUMBER?
На указанном наборе ожидаются id 2 для пользователя 7 и id 3 для пользователя 8. Поменяйте порядок вставки строк: выбор должен сохраниться. Если порядок выдачи важен, добавьте внешний ORDER BY и проверьте его отдельно.
Почему ORDER BY только по дате может дать разные строки?
При совпадении дат порядок внутри группы не определён однозначно. Нужен дополнительный уникальный критерий, например id. Это вопрос корректности результата, а не только производительности оконной функции.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.