Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Необходимо составить новое число из повторений каждой цифры в числе.  [new]
vova321
Member

Откуда:
Сообщений: 6
Дорогие участники форума помогите пожалуйста реализовать эту задачу


Дано целое положительное число. Необходимо составить новое число из повторений каждой цифры в числе. Результат вывести в область системных сообщений.
17 сен 18, 13:17    [21676784]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20198
vova321
Необходимо составить новое число из повторений каждой цифры в числе.
Невменяемо. Покажите пример, что ли...
17 сен 18, 13:19    [21676791]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
vova321
Member

Откуда:
Сообщений: 6
Akina,

ну у нас есть число например "789545" у нас должно получится "78924"
или
889157 - 29157
47835888- 47235
17 сен 18, 13:22    [21676799]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
vova321,

а sql тут при чём?
17 сен 18, 13:23    [21676801]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
Такую хрень толко в универе могут задать, а если так, то может быть сами попробуете решить?
17 сен 18, 13:26    [21676807]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
vova321
Member

Откуда:
Сообщений: 6
Akina,
прошу простить.
должно так получится у на с число"47885" - получится 1121
или

98742448 - 12131
17 сен 18, 13:26    [21676810]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
vova321
Member

Откуда:
Сообщений: 6
TaPaK,

задачу нужно решить на sql
17 сен 18, 13:33    [21676828]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
vova321
TaPaK,

задачу нужно решить на sql


автор
Результат вывести в область системных сообщений.

успехов
17 сен 18, 13:35    [21676832]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
vova321
задачу нужно решить на sql
declare @n int = 98742448, @result varchar(30);

with a as
(
 select 1 as n, substring(cast(@n as varchar(10)), 1, 1) as digit
 union all
 select n + 1, substring(cast(@n as varchar(10)), n + 1, 1) from a where n < len(cast(@n as varchar(10)))
),
b as
(
 select
  n,
  row_number() over (partition by digit order by n) as rn,
  count(*) over (partition by digit) as c
 from
  a
)
select
 @result = x.value('.', 'varchar(30)')
from
 (select cast(c as varchar(10)) from b where rn = 1 order by n for xml path(''), type) t(x);

print @result;
17 сен 18, 13:59    [21676865]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
court
Member

Откуда:
Сообщений: 1956
declare @n varchar(50) = '98742448'

;with cte as (
	select 
		n	=replace(@n,left(@n,1),'')
		,result =cast(len(@n)-len(replace(@n,left(@n,1),'')) as varchar(max))	
		,lvl	=1
		
	union all
	
	select
		n	=replace(n,left(n,1),'')
		,result =result+cast(len(n)-len(replace(n,left(n,1),'')) as varchar(max))	
		,lvl	=lvl+1
	from cte	
	where len(n)>0
)
select top 1 result from cte order by lvl desc
18 сен 18, 10:00    [21677677]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
declare @n varchar(100)
select @n = '98742448'
with a as(
select n
      ,substring(@n,n,1) s
  from (select number n
          from master..spt_values  
         where type = 'P') x
 where n between 1 and len(@n)
)
select c+''
  from (select count(1) c
              ,min(n) n
          from a 
         group by s)x
 order by n for xml path('')         
18 сен 18, 10:22    [21677708]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
andrey odegov
Member

Откуда:
Сообщений: 463
declare @n int = 987242228;

with
  r1 as (
	select ceiling(log10(@n)) ll, @n / 10 p, @n % 10 q
	union all
	select ll - 1, p / 10, p % 10 from r1 where p > 0
  ),
  dd as (select count(*) cc, min(ll) pp from r1 group by q)
select cast((select ltrim(str(cc))
             from dd
             order by pp
             for xml path('')) as int) rr;
18 сен 18, 10:29    [21677719]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
andrey odegov
Member

Откуда:
Сообщений: 463
А если воспользоваться идеей из
Посетитель
declare @n varchar(100)
select @n = '98742448'
with a as(
select n
      ,substring(@n,n,1) s
  from (select number n
          from master..spt_values  
         where type = 'P') x
 where n between 1 and len(@n)
)
select c+''
  from (select count(1) c
              ,min(n) n
          from a 
         group by s)x
 order by n for xml path('')
то можно так
declare @n int = 987242228;

with
  r1 as (
	select ceiling(log10(@n)) ll, @n / 10 p, @n % 10 q
	union all
	select ll - 1, p / 10, p % 10
	from r1
	where p > 0
  )
select cast((select ltrim(str(count(*)))
             from r1
             group by q
             order by min(ll)
             for xml path('')) as int) rr;
18 сен 18, 10:34    [21677730]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо составить новое число из повторений каждой цифры в числе.  [new]
andrey odegov
Member

Откуда:
Сообщений: 463
Исходил из то, что
vova321
Дано целое положительное число. Необходимо составить новое число из повторений каждой цифры в числе.
18 сен 18, 10:39    [21677743]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить