«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно получить последнюю дату и значение записи для каждого пользователя в базе данных?

Как эффективно получить последнюю дату и значение записи для каждого пользователя в базе данных?

Опубликовано в 2025-03-04
Просматривать:792

How to Efficiently Retrieve the Latest Record Date and Value for Each User in a Database?

извлечение самой последней даты и значения для каждого пользователя

]

Это руководство демонстрирует, как эффективно запросить таблицу базы данных записей пользователя, чтобы получить последнюю дату и связанную с ним значение для каждого пользователя. Мы рассмотрим два метода: традиционный подход соединения и более надежный метод с использованием оконных функций.

]

Метод 1: Внутреннее соединение с Subquery

]

общий подход использует внутреннюю соединение с подзадном, чтобы найти максимальную дату для каждого пользователя:

]
select t.username, t.date, t.value
from MyTable t
inner join (
    select username, max(date) as MaxDate
    from MyTable
    group by username
) tm on t.username = tm.username and t.date = tm.MaxDate
]

этот запрос эффективно получает последнюю запись для каждого имени пользователя. Однако потенциальным недостатком является то, что он может вернуть несколько записей, если несколько записей имеют одинаковую максимальную дату для данного пользователя.

]

Метод 2: Окно функционирует для обработки дубликатов дат

]

, чтобы обрабатывать потенциальные дубликаты дат, функции окна предлагают превосходное решение:

]
select x.username, x.date, x.value 
from (
    select username, date, value,
        row_number() over (partition by username order by date desc) as _rn
    from MyTable 
) x
where x._rn = 1
]

Этот метод назначает уникальный ранг каждой записи для каждого пользователя, упорядоченного по дате в порядке убывания. Отфильтровывая строки с рангом 1 ( _ rn = 1 ), мы гарантируем поиск единственной самой последней записи, даже в присутствии нескольких записей с той же последней датой. Это обеспечивает точность и избегает двусмысленности.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3