С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.11.2023
Сообщений: 1

SQL сравнение ярдом стоящих строк и сортировка убывающих последовательностей внутри таблицы

08.11.2023, 23:44. Показов 550. Ответов 1

Студворк — интернет-сервис помощи студентам
Работаю в SSMS 18, запросы на tsql

Задание:
Дано целое положительное число. Необходимо все убывающие последовательности
рядом стоящих цифр разместить по возрастанию. Результат вывести в область
системных сообщений.


Выполнить задание надо табличным методом, то есть записать в таблицу число. Допустимый код для записи числа в таблицу:
T-SQL
1
2
3
4
5
6
7
8
9
declare @table table (digit int, num int)
declare @x1 int = 210030331 --12003313
declare @i int = 1
while @x1 > 0
begin
    insert into @table values (@x1%10, @i)
    set @i+=1
    set @x1/=10
end
Во время записи числа в таблицу разрешается только записывать цифры числа в таблицу и указывать id для каждой строки.
После этого только с помощью select собрать новое число и вывести его.
Как последовательности должны разворачиваться:
есть число 210030331
в нем убывающие последовательности 210 0 30 3 31. После того, как их перевернем (заменим на возрастающую последовательность) должно получиться число 12003313.

Что пробовал:
Сравнение чисел с помощью оконных функций LAG, LEAD для сравнение предыдущих и последующих значений. Пытался внедрить код с использованием ROW_NUMBER и RANK. Сравнение с помощью join самого с собой. Код с попытками не прикладываю, чтобы не сбить с толка.

Не получается: адекватно сравнить числа в последовательности и группам последовательностей дать номера (как ниже указано)

Суть решения примерно такова:
1. Выявить убывающие последовательности с помощью сравнения строк по id.
2. Нумерация каждой последовательности (даем номер группе):
1 1
3 1
3 2
0 3
3 3
0 4
0 5
1 5
2 5
3. Затем сортируем по номеру группы в убывающем (desc), а по цифрам числа в возрастающем (asc).

Подскажите пожалуйста, что делать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2023, 23:44
Ответы с готовыми решениями:

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

Функция поиска убывающих последовательностей, доработать код
Не могу написать алгоритм этой задачи ,на языке ассемблер. Как именно его записывать?? сам код вот: ...

Определить кол-во убывающих последовательностей в массиве из 20 целых неотрицательных элементов
Не могу отладить прогу, пишет что ошибка в строке 71,77,106 никак не могу разобраться. Вот код: N equ 20 ;размер массива .model...

1
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
09.11.2023, 09:24
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
drop table if exists #t;
 
Create table #t (i bigint not null Check (i between 0 and 999999999999999999));
 
insert into #t Values (210030331), (45489097);
 
;With Num as (Select ROW_NUMBER() over (order by 1/0) N from string_split(Space(18),' ') a)
, links as (
Select t.i, Num.N, d.digit
    from #t t
    Cross join Num
    Cross apply (Values (Substring(Cast(t.i as varchar(20)), Num.N, 1))) d(digit)
Where  d.digit > ''
),
chains as (
Select *, Case when c.digit < Lag(c.digit, 1, -1) over (partition by i order by N) then 0 else 1 END NN
from links c
),
rawdata as (Select *, sum(NN) over (partition by i order by N) grp from chains),
tt as (
Select  r.i, r.grp, STRING_AGG(r.digit, '') within group (order by r.digit) digits
from rawdata r
Group by r.i, r.grp
)
Select i, Cast(STRING_AGG(tt.digits, '') within group (order by tt.grp) as bigint) result
from tt
Group by i
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2023, 09:24
Помогаю со студенческими работами здесь

Создать файл, содержащий длины всех убывающих последовательностей элементов исходного файла
Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла. ...

File23. Создать файл, содержащий длины всех убывающих последовательностей элементов исходного файла
PascalABC. Помогите решить задачи. А то я в этих File не очень соображаю File23. Дан файл вещественных чисел. Создать файл целых...

15. В файле записаны числа. Создать новый файл, содержащий длины всех убывающих последовательностей
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла
Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла....

Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла
Бинарные файлы: Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru