Как отсортировать данные?

Romanov-krd
Дата: 12.05.2015 10:33:35
Добрый день!

существует таблица 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 %% ????
Glory
Дата: 12.05.2015 10:36:17
Romanov-krd
Как сделать так чтобы считал количество только второго номера 01,02, ??

Выбрать из cad_number слева все "до второго номера". И по этому значению группировать
o-o
Дата: 12.05.2015 10:39:55
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);

и при чем тут сорт?..
Romanov-krd
Дата: 12.05.2015 11:52:49
да! то что нужно!!! Спасибо.
Wlr-l
Дата: 12.05.2015 11:57:23
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;
o-o
Дата: 12.05.2015 12:05:22
Wlr-l,

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

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

разнесет по разным группам.
условие перечитайте и на красное посмотрите.
у него 2 символа для учета выделены, а не 5
Glory
Дата: 12.05.2015 12:16:27
o-o
пишут же, с одинаковым вторым номером ( выделен красным).
ваше "с одинаковым вторым 01" при разном первом (11, 23):

И что будет, если первая и/или вторая группа цифр будет занимать больше 2х позиций ?
Wlr-l
Дата: 12.05.2015 12:19:13
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;
o-o
Дата: 12.05.2015 12:21:36
Glory
o-o
пишут же, с одинаковым вторым номером ( выделен красным).
ваше "с одинаковым вторым 01" при разном первом (11, 23):

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

а тогда, либо ТС в след.раз будет описывать точнее задачу/предоставлять тестовые данные,
отражающие возможную разноформатность,
либо "какой вопрос, такой ответ"
o-o
Дата: 12.05.2015 12:25:46
Wlr-l
Может быть неудачно подобран пример?

может, мне еще поугадывать, а вдруг вообще "второго номера нет" типа 23:
а вдруг он может быть просто опущен, типа вот так: 23::0101789:1174,
а может...
конкурс "кто предложит больше версий"???
не вы ли в соседнем топике iap-у доказываете, что всего не предусмотришь???