TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1124 3.3K
⚡ SQL совет

Часто нужно выбрать последнее значение для каждой группы (например, последний заказ клиента)?
Вместо MAX(date) с подзапросами используйте `DISTINCT ON` (в PostgreSQL) или оконные функции.

Вариант 1 — PostgreSQL `DISTINCT ON`


SELECT DISTINCT ON (user_id)
user_id, order_id, created_at
FROM orders
ORDER BY user_id, created_at DESC;


Берёт по одной строке на user_id, оставляя самую свежую по дате.

Вариант 2 — универсальный (SQL Server, MySQL 8+, Oracle)

WITH ranked AS (
SELECT
user_id,
order_id,
created_at,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders
)
SELECT user_id, order_id, created_at
FROM ranked
WHERE rn = 1;


📌 Работает во всех СУБД с оконными функциями — гибко и читаемо.

@databases_tg
  • 🔥 11
  • 👍 8
  • ❤ 2
  • 🥰 1
More from @databases_tg
  1. Oct 2, 2026Как SQLite превращает числа в текст в 2 раза быстрее? Трюк с парами цифр Обычно число пере…
  2. Oct 2, 2026В субботу, 17 октября, Москва станет точкой притяжения для всех специалистов в области Rec…
  3. Oct 1, 2026Жиз
  4. Sep 30, 2026📝 5 уровней ИИ-агентов: от промпта до продакшена Context, loop, Jev, harness и evals: раз…
  5. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  6. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →