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

Откуда:
Сообщений: 31
Есть таблица, надо сгруппировать строки
Start Stop Place
6:48:43 6:59:59 Begin
7:00:00 7:12:52 Begin
17:29:23 17:33:07 END
18:53:11 18:57:41 END

Надо оставить красненькие и убрать черненькие числа.
В результате требуется получить таблицу
Start Stop Place
6:48:43 7:12:52 Begin
17:29:23 18:57:41 END


Подскажите, где почитать?
23 апр 13, 17:26    [14220240]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
GROUP BY Place
23 апр 13, 17:29    [14220263]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
Glory
Member

Откуда:
Сообщений: 104751
select min(start), max(stop)
from mytable where place = 'Begin'
union all
select min(start), max(stop)
from mytable where place = 'END'
23 апр 13, 17:30    [14220268]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
i-n-d-e-x
Member

Откуда:
Сообщений: 31
Прошу у всех прощения, таблицу нарисовал неправильно из ложной посылки экономии места.
Ниже более правильная версия. Надо убрать черные числа.
Start Stop Place
6:48:43 6:59:59 Begin
7:00:00 7:12:52 Begin
8:31:22 8:37:14 END
9:51:47 09:59:59 Begin
10:00:00 10:01:22 Begin
11:20:57 11:24:50 END
12:42:41 12:59:59 Begin
13:00:00 13:23:03 Begin
14:42:40 14:46:55 END
17:29:23 17:33:07 END
18:53:11 18:57:41 END
23 апр 13, 17:44    [14220372]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
Glory
Member

Откуда:
Сообщений: 104751
i-n-d-e-x
Надо убрать черные числа.

По какому принципу ?
23 апр 13, 17:44    [14220379]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
i-n-d-e-x
Надо убрать черные числа.

По какому принципу ?

Вы ,что дальтоник ? Вам же четко сказали - по цвету
23 апр 13, 17:56    [14220478]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Maxx
Glory
пропущено...

По какому принципу ?

Вы ,что дальтоник ? Вам же четко сказали - по цвету

Это 5! ))))))))
23 апр 13, 17:59    [14220510]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Maxx
Вы ,что дальтоник ? Вам же четко сказали - по цвету

За такое отношение к черному цвету в США можно угодить в тюрьму )
23 апр 13, 18:00    [14220514]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Почему веделен черный?
i-n-d-e-x
Start Stop Place
6:48:43 6:59:59 Begin
7:00:00 7:12:52 Begin
8:31:22 8:37:14 END
9:51:47 09:59:59 Begin
10:00:00 10:01:22 Begin
11:20:57 11:24:50 END
12:42:41 12:59:59 Begin
13:00:00 13:23:03 Begin
14:42:40 14:46:55 END
17:29:23 17:33:07 END
18:53:11 18:57:41 END
23 апр 13, 18:04    [14220545]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Я кажется начинаю понимать что автор имел в виду.
Нужно упорядочить по (кажется) первому столбцу.
Далее если подряд идет более одного Place с одинаковым значением, то группируем по Place и берем MIN(Start) и MAX(Stop)
23 апр 13, 18:09    [14220591]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
i-n-d-e-x
Member

Откуда:
Сообщений: 31
Уважаемый ambarka_max правильно описал задачу. Большое спасибо. Впредь постараюсь не напрягать общественность.
23 апр 13, 18:24    [14220669]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
i-n-d-e-x
Уважаемый ambarka_max правильно описал задачу. Большое спасибо. Впредь постараюсь не напрягать общественность.
Где версия сервера?
23 апр 13, 20:00    [14221025]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
i-n-d-e-x
Member

Откуда:
Сообщений: 31
mssql 212 standart
23 апр 13, 20:34    [14221098]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
i-n-d-e-x
Member

Откуда:
Сообщений: 31
sorry
Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Enterprise Evaluation Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
23 апр 13, 20:36    [14221104]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
qwerty112
Guest
i-n-d-e-x,

+
declare @t table (Start datetime, Stop datetime, Place varchar(20))

insert into @t  
select '6:48:43', '6:59:59', 'Begin' union all 
select '7:00:00', '7:12:52', 'Begin' union all 
select '8:31:22', '8:37:14', 'END' union all 
select '9:51:47', '09:59:59', 'Begin' union all 
select '10:00:00', '10:01:22', 'Begin' union all 
select '11:20:57', '11:24:50', 'END' union all 
select '12:42:41', '12:59:59', 'Begin' union all 
select '13:00:00', '13:23:03', 'Begin' union all 
select '14:42:40', '14:46:55', 'END' union all 
select '17:29:23', '17:33:07', 'END' union all 
select '18:53:11', '18:57:41', 'END' 

--select * from @t

;with cte as
(select *,
row_number() over(order by Start)-row_number() over(partition by Place order by Start) as xz
from @t)

select min(Start) as Start, max(Stop) as Stop, Place  
from cte
group by Place, xz
order by 1

Start                   Stop                    Place
----------------------- ----------------------- --------------------
1900-01-01 06:48:43.000 1900-01-01 07:12:52.000 Begin
1900-01-01 08:31:22.000 1900-01-01 08:37:14.000 END
1900-01-01 09:51:47.000 1900-01-01 10:01:22.000 Begin
1900-01-01 11:20:57.000 1900-01-01 11:24:50.000 END
1900-01-01 12:42:41.000 1900-01-01 13:23:03.000 Begin
1900-01-01 14:42:40.000 1900-01-01 18:57:41.000 END
23 апр 13, 21:25    [14221180]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
i-n-d-e-x
Member

Откуда:
Сообщений: 31
Всем спасибо.
Огромное спасибо qwerty112 за изящное решение и науку и ambarka_max за внимание и четко поставленную задачу.
Специальное спасибо Maxx.
С уважением, i-n-d-e-x.
24 апр 13, 06:32    [14221900]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
Жека Алексеев
Member

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

Красивейшее решение по "сжатию" таблицы!
Спасибо, qwerty112! :)
24 июн 13, 12:15    [14473187]     Ответить | Цитировать Сообщить модератору
 Re: Не смог найти в FAQ создание правильной группировки, подскажите, пожалуйста, ссылку.  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Жека Алексеев
qwerty112,

Красивейшее решение по "сжатию" таблицы!
Спасибо, qwerty112! :)
Поиском пользоваться пробовали? :)
24 июн 13, 12:21    [14473236]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить