Вопросы с тегом «window-functions»

Функция, которая разбивает результирующий набор и вычисляет что-то в этом разделе без объединения данных в этом разделе.

57
Скользящая сумма диапазона дат с использованием оконных функций

Мне нужно рассчитать скользящую сумму по диапазону дат. Чтобы проиллюстрировать это, используя пример базы данных AdventureWorks , следующий гипотетический синтаксис сделал бы именно то, что мне нужно: SELECT TH.ProductID, TH.TransactionDate, TH.ActualCost, RollingSum45 = SUM(TH.ActualCost) OVER (...

30
MySQL и оконные функции

Кажется, что MySQLне поддерживает оконные функции. Например, простое: COUNT(*) OVER() AS cntне работает. Что я не уверен, так это то, относится ли это к коммерческой версии (я полагаю, что версия сообщества ограничена). Если нет, то как обойти эту недостающую...

22
Ограничить результаты до первых 2 строк рейтинга

В SQL Server 2008 я использую, RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)чтобы вернуть набор данных с RANK. Но у меня есть сотни записей для каждого раздела, поэтому я получу значения с рангом 1, 2, 3 ... 999. Но я хочу только до 2 RANKsв каждом PARTITION. Пример: ID Name Score Subject 1...

18
Использование DISTINCT в оконной функции с OVER

Я пытаюсь перенести запрос из Oracle в SQL Server 2014. Вот мой запрос, который прекрасно работает в Oracle: select count(distinct A) over (partition by B) / count(*) over() as A_B from MyTable Вот ошибка, которую я получил после того, как попытался выполнить этот запрос в SQL Server 2014. Use of...

16
Найти «n» последовательных свободных номеров из таблицы

У меня есть таблица с такими номерами (статус БЕСПЛАТНЫЙ или НАЗНАЧЕН) Идентификационный номер ----------------------- 1 000001 НАЗНАЧЕН 1 000002 БЕСПЛАТНО 1 000003 НАЗНАЧЕН 1 000004 БЕСПЛАТНО 1 000005 БЕСПЛАТНО 1 000006 НАЗНАЧЕН 1 000007 НАЗНАЧЕН 1 000008 БЕСПЛАТНО 1 000009 БЕСПЛАТНО 1 000010...

14
Подведение итогов к предыдущему ряду

Мне нужна помощь с оконными функциями. Я знаю, что вы можете рассчитать сумму в окне и промежуточную сумму в окне. Но возможно ли рассчитать предыдущий промежуточный итог, т.е. промежуточный итог, не включая текущую строку? Я предполагаю, что вам нужно будет использовать аргумент ROWили RANGE. Я...

13
Как получить последнее ненулевое значение в упорядоченном столбце огромной таблицы?

У меня есть следующий вход: id | value ----+------- 1 | 136 2 | NULL 3 | 650 4 | NULL 5 | NULL 6 | NULL 7 | 954 8 | NULL 9 | 104 10 | NULL Я ожидаю следующий результат: id | value ----+------- 1 | 136 2 | 136 3 | 650 4 | 650 5 | 650 6 | 650 7 | 954 8 | 954 9 | 104 10 | 104 Тривиальным решением было...

13
Группировка или Окно

У меня есть ситуация, я думаю, может быть решена с помощью оконной функции, но я не уверен. Представьте себе следующую таблицу CREATE TABLE tmp ( date timestamp, id_type integer ) ; INSERT INTO tmp ( date, id_type ) VALUES ( '2017-01-10 07:19:21.0', 3 ), ( '2017-01-10 07:19:22.0', 3 ), (...

12
Объедините две таблицы событий в одну временную шкалу

Даны две таблицы: CREATE TABLE foo (ts timestamp, foo text); CREATE TABLE bar (ts timestamp, bar text); Я хочу написать запрос, который возвращает значения для ts, fooи barкоторый представляет собой единое представление самых последних значений. Другими словами, если fooсодержится: ts | foo...

12
Выберите самую длинную непрерывную последовательность

Я пытаюсь построить запрос в PostgreSQL 9.0, который получает самую длинную последовательность непрерывных строк для определенного столбца. Рассмотрим следующую таблицу: lap_id (serial), lap_no (int), car_type (enum), race_id (int FK) Где lap_noуникально для каждого (race_id, car_type). Я хотел бы,...

11
Использование функции окна для переноса первого ненулевого значения в разделе

Рассмотрим таблицу, в которой записываются посещения create table visits ( person varchar(10), ts timestamp, somevalue varchar(10) ) Рассмотрим данные этого примера (временная метка упрощена как счетчик) ts| person | somevalue ------------------------- 1 | bob |null 2 | bob |null 3 | jim |null 4 |...

11
Сравнение производительности между использованием функции Join и Window для получения значений опережения и отставания

У меня есть таблица с 20М строк, а каждая строка имеет 3 колонки: time, id, и value. Для каждого idи timeесть valueстатус. Я хочу знать опережающие и запаздывающие значения определенного timeдля конкретного id. Я использовал два метода для достижения этой цели. Один метод использует соединение, а...

11
Как получить агрегат оконной функции в Postgres?

У меня есть таблица, содержащая два столбца перестановок / комбинаций целочисленных массивов, и третий столбец, содержащий значение, например, так: CREATE TABLE foo ( perm integer[] NOT NULL, combo integer[] NOT NULL, value numeric NOT NULL DEFAULT 0 ); INSERT INTO foo VALUES ( '{3,1,2}',...

11
Как я могу написать оконный запрос, который суммирует столбец для создания отдельных сегментов?

У меня есть таблица, которая включает в себя столбец десятичных значений, таких как это: id value size -- ----- ---- 1 100 .02 2 99 .38 3 98 .13 4 97 .35 5 96 .15 6 95 .57 7 94 .25 8 93 .15 То, что мне нужно сделать, немного сложно описать, поэтому, пожалуйста, потерпите меня. То, что я пытаюсь...

11
Почему агрегат окна пакетного режима дает арифметическое переполнение?

Следующий запрос выполняет оконное SUMотображение над таблицей columnstore 1500 total rows, каждый из которых имеет значение 0 или 1, и переполняет INTтип данных. Почему это происходит? SELECT a, p, s, v, m, n, SUM(CASE WHEN n IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY s, v, a ORDER BY p) AS...

10
Оконные функции вызывают ужасный план выполнения при вызове из представления с внешним параметризованным предложением 'where'

У меня была эта проблема давным-давно, я нашел обходной путь, который подходил мне, и забыл об этом. Но теперь есть такой вопрос о SO, поэтому я хочу поднять эту проблему. Есть представление, которое соединяет несколько таблиц очень простым способом (заказы + строки заказа). При запросе без...

10
Почему мой запрос к SQL Server ведет себя иначе при обновлении, чем при SELECT?

Я написал запрос SQL Server, который обновляет записи, чтобы иметь последовательный номер после разделения на поле. Когда я запускаю его как оператор SELECT, все выглядит великолепно: DECLARE @RunDetailID INT = 448 DECLARE @JobDetailID INT SELECT @JobDetailID = [JobDetailID] FROM [RunDetails] WHERE...

10
SQL различается по разделам

У меня есть таблица с двумя столбцами, я хочу посчитать различные значения на Col_B (обусловлено) Col_A. MyTable Col_A | Col_B A | 1 A | 1 A | 2 A | 2 A | 2 A | 3 b | 4 b | 4 b | 5 ожидаемый результат Col_A | Col_B | Result A | 1 | 3 A | 1 | 3 A | 2 | 3 A | 2 | 3 A | 2 | 3 A | 3 | 3 b | 4 | 2 b | 4...

10
Смещение окна, основанное на отметке времени

Я пишу запрос, который будет использоваться для публикации результатов в социальной сети. Концепция заключается в том, что мобильное приложение будет запрашивать N элементов и предоставлять начальную дату и время, которые я назвал @CutoffTimeниже. Цель времени отключения состоит в том, чтобы...