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

Откуда:
Сообщений: 660
id date

234 02.04.2012 11:23:15
234 02.04.2012 11:26:15
234 02.04.2012 11:30:15
234 02.04.2012 16:30:15
235 05.04.2012 11:23:15
234 05.04.2012 11:23:15
235 08.04.2012 11:23:15

как написать запрос чтобы он делал count
по id но с условием что если время строки
в пределах одного часа то считать за единицу

в желаемом результате я бы хотелбы полчить
группировку

234 3 (первые три строки считать за единицу поскольку образовались в пределах часа)
235 2

благодарен за понимание
18 июн 12, 21:52    [12734734]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
1. row_number() для пронумеровать в пределах часа
2. sum( case when номер = 1 then 1 else 0 end )
18 июн 12, 22:07    [12734797]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Если ничего не напутал, то вот:
select id,count(distinct convert(varchar(13),[date],120))
from [table]
group by id
18 июн 12, 22:07    [12734800]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
Klopovnik
Member

Откуда: Рига
Сообщений: 39
Serg_77m,

благодарю, даже как сторонний читатель, увидел интересную конструкцию, которую сам реализовывал бы по другому (вложенным запросом)
организаторам форума - огромная благодарность
18 июн 12, 23:10    [12735073]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 660
Serg_77m
Если ничего не напутал, то вот:
select id,count(distinct convert(varchar(13),[date],120))
from [table]
group by id


благодарен за конструцию но...:(
красиво предполагалось но у меня рузультат выкатил:

234 5
235 2
19 июн 12, 09:32    [12735902]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 660
всё понял - дистинкт для каунта нада брать не тока по конвертированному полю
дата....тяжко мозг ворочается по жаре...
19 июн 12, 09:44    [12735962]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 660
успех оказался чисто условным поскольку время
к строке приводить - несколько неверно....
19 июн 12, 10:13    [12736135]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
qwrqwr
Member

Откуда: Msk
Сообщений: 1684
SangYong
поскольку время
к строке приводить - несколько неверно....

Приводите тогда время к времени:
select id, count(distinct dateadd(hour, datediff(hour, '20120101', [yourtime]), '20120101'))
  from [table] group by id
19 июн 12, 10:59    [12736443]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
mccc
Member [заблокирован]

Откуда: Казань
Сообщений: 7650
qwrqwr
SangYong
поскольку время
к строке приводить - несколько неверно....

Приводите тогда время к времени:
select id, count(distinct dateadd(hour, datediff(hour, '20120101', [yourtime]), '20120101'))
  from [table] group by id

select id, count(distinct convert(datetime, convert(varchar(13),[date],120)+':00:00'))
from [table] group by id
19 июн 12, 11:11    [12736535]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
PVC
Member

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

или так

select cast(round(cast(getdate() as float)*24,0)/24 as datetime)
19 июн 12, 11:20    [12736619]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 660
ага - благодарен всем...
19 июн 12, 13:12    [12737739]     Ответить | Цитировать Сообщить модератору
 Re: и мне тоже помощь по запросу не помешала бы :(  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
SangYong
благодарен за конструцию но...:(
красиво предполагалось но у меня рузультат выкатил:

234 5
235 2

Пробую у себя:

set dateformat dmy

create table #t1 ([id] int,[date] datetime)

insert into #t1 ([id],[date]) values (234,'02.04.2012 11:23:15')
insert into #t1 ([id],[date]) values (234,'02.04.2012 11:26:15')
insert into #t1 ([id],[date]) values (234,'02.04.2012 11:30:15')
insert into #t1 ([id],[date]) values (234,'02.04.2012 16:30:15')
insert into #t1 ([id],[date]) values (235,'05.04.2012 11:23:15')
insert into #t1 ([id],[date]) values (234,'05.04.2012 11:23:15')
insert into #t1 ([id],[date]) values (235,'08.04.2012 11:23:15')

select id,count(distinct convert(varchar(13),[date],120)) as cnt
from #t1
group by id


Результат:
id cnt
----------- -----------
234 3
235 2


Непонятно. А такой запрос что у Вас выдаёт?
select id,convert(varchar(13),[date],120)
from #t1

У меня так:
id
----------- -------------
234 2012-04-02 11
234 2012-04-02 11
234 2012-04-02 11
234 2012-04-02 16
235 2012-04-05 11
234 2012-04-05 11
235 2012-04-08 11
19 июн 12, 20:55    [12741515]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить