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

Откуда:
Сообщений: 120
Добрый день!

существует таблица tir в ней есть поле cad_number где данные представлены в следующем виде -

23:01:0101789:1174
23:01:0234543:2343
23:02:7867589:7865
............................
23:49:5867848:8495

тип данных varchar


необходимо узнать количество записей с одинаковым вторым номером ( выделен красным). Если писать запрос

select cad_number, count (cad_number) as colichestvo
from tir
group by cad_number;

то подсчет происходит по всему номеру. Как сделать так чтобы считал количество только второго номера 01,02, ??? может быть как то при помощи like %% ????
12 май 15, 10:33    [17627473]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Romanov-krd
Как сделать так чтобы считал количество только второго номера 01,02, ??

Выбрать из cad_number слева все "до второго номера". И по этому значению группировать
12 май 15, 10:36    [17627481]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
o-o
Guest
declare @tir table (cad_number varchar(100));
insert into @tir values
('23:01:0101789:1174'),
('23:01:0234543:2343'),
('23:02:7867589:7865'),
('23:49:5867848:8495')

select substring(cad_number, 4, 2), count (cad_number) as colichestvo
from @tir
group by substring(cad_number, 4, 2);

и при чем тут сорт?..
12 май 15, 10:39    [17627498]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
да! то что нужно!!! Спасибо.
12 май 15, 11:52    [17627911]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
o-o,

Наверно, правильнее будет как предложил Glory. Вряд ли второй номер, например, 02 будет иметь такой же смысл для первого номера 23 как и для первого номера 22:
 declare @tir table (cad_number varchar(100));
insert into @tir values
('23:01:0101789:1174'),
('23:01:0234543:2343'),
('23:02:7867589:7865'),
('23:49:5867848:8495')

select substring(cad_number, 1, 5) as cad_number_1_2, count (cad_number) as cnt_cad_number
  from @tir
 group by substring(cad_number, 1, 5)
 order by cad_number_1_2;
12 май 15, 11:57    [17627946]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
o-o
Guest
Wlr-l,

пишут же, с одинаковым вторым номером ( выделен красным).
ваше "с одинаковым вторым 01" при разном первом (11, 23):

('23:01:0101789:1174'),
('11:01:0101789:1174')

разнесет по разным группам.
условие перечитайте и на красное посмотрите.
у него 2 символа для учета выделены, а не 5
12 май 15, 12:05    [17628003]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
пишут же, с одинаковым вторым номером ( выделен красным).
ваше "с одинаковым вторым 01" при разном первом (11, 23):

И что будет, если первая и/или вторая группа цифр будет занимать больше 2х позиций ?
12 май 15, 12:16    [17628069]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
o-o,

Я прочитал условие, увидел красный цвет... и тоже подумал 4_2.

Но, в примере данных первый номер на всех наборах равен 23. Может быть неудачно подобран пример? Или фильтрацию по первому номеру уже выполнили? Тогда бы я написал так:

select substring(cad_number, 4, 2) as cad_number_1_2, count (cad_number) as cnt_cad_number
  from @tir
 where    substring(cad_number, 1, 2)=23
 group by substring(cad_number, 4, 2)
 order by cad_number_1_2;
12 май 15, 12:19    [17628092]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
o-o
Guest
Glory
o-o
пишут же, с одинаковым вторым номером ( выделен красным).
ваше "с одинаковым вторым 01" при разном первом (11, 23):

И что будет, если первая и/или вторая группа цифр будет занимать больше 2х позиций ?

а тогда, либо ТС в след.раз будет описывать точнее задачу/предоставлять тестовые данные,
отражающие возможную разноформатность,
либо "какой вопрос, такой ответ"
12 май 15, 12:21    [17628107]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
o-o
Guest
Wlr-l
Может быть неудачно подобран пример?

может, мне еще поугадывать, а вдруг вообще "второго номера нет" типа 23:
а вдруг он может быть просто опущен, типа вот так: 23::0101789:1174,
а может...
конкурс "кто предложит больше версий"???
не вы ли в соседнем топике iap-у доказываете, что всего не предусмотришь???
12 май 15, 12:25    [17628130]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
o-o,

Я ничего не доказываю, просто предложил включить в Ваш запрос условие:
 where  substring(cad_number, 1, 2)=23

И все!
12 май 15, 12:30    [17628157]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
а тогда, либо ТС в след.раз будет описывать точнее задачу/предоставлять тестовые данные,
отражающие возможную разноформатность,
либо "какой вопрос, такой ответ"

Мне лично виден в поле массив данных с разделителем, который и определяет начало/окончание некого "номера"
12 май 15, 12:34    [17628179]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
o-o
Guest
Wlr-l,
короче, чтоб поддержать беседу, да?
да в первом посте вообще указано, что это cad_number,
т.e. формат фиксирован, а каждая группа цифр
просто за что-то определенное отвечает.
ну там, номер отделения, номер филиала и т.д.
вот по филиалу поди и группирует.

товарищ уже слинял, а у нас уже беседа ни о чем, к тому же скучная.
больше в это тему не пишу
Картинка с другого сайта.
12 май 15, 12:41    [17628212]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Wlr-l
o-o,

Я ничего не доказываю, просто предложил включить в Ваш запрос условие:
 where  substring(cad_number, 1, 2)=23

И все!
Да давайте уже сразу вот так:
where cad_number LIKE '23:[0-9][0-9]:[0-9][0-9][0-9][0-9][0-9][0-9][0-9]:[0-9][0-9][0-9][0-9]'

Вам что, заняться больше нечем что-ли?
12 май 15, 20:54    [17630901]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Romanov-krd,

23:01:0101789:1174

Хранить неатомарные данные в базе - преступление против реляционной теории. Нормализуйте данные сперва.
12 май 15, 21:44    [17631135]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Wlr-l
Member

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

Суть вопроса не КАК сделать, а нужно ли учитывать при группировке по второму номеру группировку по первому номеру. Тем более, как уже было указано, не известно, будет ли первый и второй номер всегда иметь по две цифры.

"Вам что, заняться больше нечем что-ли?"

Да вот, глупый я, ввязался в эту тему, вместо того чтобы заняться ...
13 май 15, 12:08    [17633172]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Wlr-l,

первый номер всегда 23
18 май 15, 13:41    [17655313]     Ответить | Цитировать Сообщить модератору
 Re: Как отсортировать данные?  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
o-o,

да, все правильно первый номер - номер региона второй номер - номер района
18 май 15, 13:46    [17655341]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить