[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kak-rabotayut-okonnye-funktsii-window-functions":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1049,"kak-rabotayut-okonnye-funktsii-window-functions",28,"postgresql","PostgreSQL","🐘","Как работают оконные функции (window functions)?","Оконные функции выполняют вычисления над набором строк, связанных с текущей строкой, без группировки — в отличие от GROUP BY строки не схлопываются. Это мощный инструмент для аналитических запросов.\n\n### Синтаксис\n\n```sql\nфункция() OVER (\n    [PARTITION BY столбец1, столбец2, ...]   -- разбивка на группы (окна)\n    [ORDER BY столбец3 [ASC|DESC], ...]      -- сортировка внутри окна\n    [ROWS|RANGE BETWEEN ... AND ...]         -- рамка окна\n)\n```\n\n### Пример: нумерация и нарастающий итог\n\n```sql\nSELECT\n    id, account_id, amount, created_at,\n    ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY created_at) AS tx_number,\n    SUM(amount) OVER (PARTITION BY account_id ORDER BY created_at) AS running_total,\n    SUM(amount) OVER (PARTITION BY account_id) AS account_total\nFROM transactions;\n```\n\n### Рамка окна (frame)\n\n```sql\n-- Скользящее среднее за 3 записи\nAVG(amount) OVER (\n    ORDER BY created_at\n    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING\n) AS moving_avg\n```\n\nПри наличии ORDER BY рамка по умолчанию: `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` (нарастающий итог).\n\n### Именованное окно (WINDOW)\n\n```sql\nSELECT\n    id, amount,\n    ROW_NUMBER() OVER w AS rn,\n    SUM(amount) OVER w AS running_total,\n    AVG(amount) OVER w AS running_avg\nFROM transactions\nWINDOW w AS (PARTITION BY account_id ORDER BY created_at);\n```\n\n> **На собеседовании:** главное отличие от GROUP BY — строки не схлопываются. PARTITION BY разбивает данные на окна (как GROUP BY), но каждая строка остаётся в результате. Упомяните именованное окно (WINDOW) — это показывает умение писать чистый SQL.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Как работают оконные функции (window functions)? — Gymterview","Оконные функции выполняют вычисления над набором строк, связанных с текущей строкой, без группировки — в отличие от GROUP BY строки не схлопываются. Это мощный ","Оконные функции выполняют вычисления над набором строк, связанных с текущей строкой, без группировки — в отличие от GROU",[7,13],"Оконные функции выполняют вычисления над набором строк, связанных с текущей строкой, без группировки — в отличие от GROUP BY строки не схлопываются. Это мощный инструмент для аналитических запросов.",true]