Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.02;
Скачать: CL | DM;

Вниз

Выбрать записи ближайшие к определенному интервалу   Найти похожие ветки 

 
Раиса ©   (2008-04-17 11:09) [0]

Есть таблица (ниже приведены 2 поля из нее). Как написать запрос, выбрав по времени только одну запись в диапазоне например, 2 часа по каждому id (второй столбец), ближайшую к первой записи по времени?

2008-04-14 22:44:00.000 20028
2008-04-15 00:26:00.000 20028
2008-04-15 00:49:00.000 20028
2008-04-15 01:02:00.000 20028
2008-04-15 01:03:00.000 20028
2008-04-15 02:43:00.000 20028
2008-04-15 02:45:00.000 20028
2008-04-15 04:24:00.000 20028
2008-04-15 04:29:00.000 20028
2008-04-15 05:49:00.000 20028
2008-04-15 06:04:00.000 20028
2008-04-15 06:12:00.000 20028
2008-04-15 06:13:00.000 20028
2008-04-15 07:30:00.000 20028
2008-04-15 07:44:00.000 20028
2008-04-15 07:51:00.000 20028
2008-04-15 09:11:00.000 20028
2008-04-15 09:12:00.000 20028
2008-04-15 09:29:00.000 20028
2008-04-15 09:34:00.000 20028
2008-04-15 10:50:00.000 20028
2008-04-15 10:52:00.000 20028
2008-04-15 11:00:00.000 20028
2008-04-15 11:13:00.000 20028
2008-04-15 11:16:00.000 20028
2008-04-15 12:31:00.000 20028
2008-04-15 12:41:00.000 20028
2008-04-15 12:42:00.000 20028
2008-04-15 12:46:00.000 20028
2008-04-15 12:51:00.000 20028
2008-04-15 12:54:00.000 20028
2008-04-15 14:04:00.000 20028
2008-04-15 14:10:00.000 20028
2008-04-15 14:19:00.000 20028
2008-04-15 14:26:00.000 20028
2008-04-15 15:43:00.000 20028
2008-04-15 15:47:00.000 20028
2008-04-15 15:48:00.000 20028
2008-04-15 16:03:00.000 20028
2008-04-15 16:04:00.000 20028
2008-04-15 16:05:00.000 20028
2008-04-15 16:10:00.000 20028
2008-04-15 17:22:00.000 20028
2008-04-15 17:45:00.000 20028
2008-04-15 17:46:00.000 20028
2008-04-15 19:04:00.000 20028
2008-04-15 19:05:00.000 20028
2008-04-15 19:29:00.000 20028
2008-04-15 20:43:00.000 20028
2008-04-15 21:05:00.000 20028
2008-04-15 22:24:00.000 20028
2008-04-15 22:43:00.000 20028
2008-04-15 22:44:00.000 20028
2008-04-16 00:06:00.000 20028
2008-04-16 00:28:00.000 20028
2008-04-16 00:52:00.000 20028
2008-04-16 02:31:00.000 20028
2008-04-16 02:34:00.000 20028
2008-04-16 04:14:00.000 20028
2008-04-16 04:15:00.000 20028
2008-04-16 05:25:00.000 20028
2008-04-16 05:26:00.000 20028
2008-04-16 05:53:00.000 20028
2008-04-16 06:00:00.000 20028
2008-04-16 07:05:00.000 20028
2008-04-16 08:43:00.000 20028
2008-04-16 08:45:00.000 20028
2008-04-16 08:51:00.000 20028
2008-04-16 09:10:00.000 20028
2008-04-16 09:12:00.000 20028
2008-04-16 09:17:00.000 20028
2008-04-16 10:25:00.000 20028
2008-04-16 10:29:00.000 20028
2008-04-16 10:48:00.000 20028
2008-04-16 10:56:00.000 20028
2008-04-16 12:09:00.000 20028
2008-04-16 12:29:00.000 20028
2008-04-16 12:30:00.000 20028
2008-04-16 12:31:00.000 20028
2008-04-16 12:32:00.000 20028
2008-04-16 13:39:00.000 20028
2008-04-16 13:40:00.000 20028
2008-04-16 13:47:00.000 20028
2008-04-16 13:48:00.000 20028
2008-04-16 14:08:00.000 20028
2008-04-16 14:09:00.000 20028
2008-04-16 14:10:00.000 20028
2008-04-16 14:11:00.000 20028
2008-04-16 14:13:00.000 20028
2008-04-16 15:19:00.000 20028
2008-04-16 15:53:00.000 20028
2008-04-16 16:55:00.000 20028
2008-04-16 16:58:00.000 20028
2008-04-16 17:06:00.000 20028
2008-04-16 17:24:00.000 20028
2008-04-16 17:34:00.000 20028
2008-04-16 17:35:00.000 20028
2008-04-16 18:40:00.000 20028
2008-04-16 18:41:00.000 20028
2008-04-16 18:43:00.000 20028
2008-04-16 19:01:00.000 20028
2008-04-16 19:19:00.000 20028
2008-04-16 20:23:00.000 20028
2008-04-16 20:41:00.000 20028
2008-04-16 22:02:00.000 20028
2008-04-16 22:25:00.000 20028
2008-04-16 23:47:00.000 20028
2008-04-17 00:05:00.000 20028
2008-04-17 02:20:00.000 20028
2008-04-17 02:23:00.000 20028
2008-04-17 03:20:00.000 20028
2008-04-17 04:06:00.000 20028
2008-04-17 05:00:00.000 20028
2008-04-17 05:42:00.000 20028
2008-04-15 00:18:00.000 20029
2008-04-15 01:18:00.000 20029
2008-04-15 02:18:00.000 20029
2008-04-15 03:18:00.000 20029
2008-04-15 04:20:00.000 20029
2008-04-15 05:20:00.000 20029
2008-04-15 06:20:00.000 20029
2008-04-15 07:20:00.000 20029
2008-04-15 08:22:00.000 20029
2008-04-15 09:22:00.000 20029
2008-04-15 10:22:00.000 20029
2008-04-15 11:22:00.000 20029
2008-04-15 12:24:00.000 20029
2008-04-15 13:24:00.000 20029
2008-04-15 15:40:00.000 20029
2008-04-15 16:42:00.000 20029
2008-04-15 17:42:00.000 20029
2008-04-15 18:42:00.000 20029
2008-04-15 19:42:00.000 20029
2008-04-15 20:44:00.000 20029
2008-04-15 21:44:00.000 20029
2008-04-15 22:44:00.000 20029
2008-04-15 23:44:00.000 20029
2008-04-16 00:46:00.000 20029
2008-04-16 01:46:00.000 20029
2008-04-16 02:46:00.000 20029
2008-04-16 03:46:00.000 20029
2008-04-16 04:48:00.000 20029
2008-04-16 05:48:00.000 20029
2008-04-16 06:48:00.000 20029
2008-04-16 07:48:00.000 20029
2008-04-16 08:50:00.000 20029
2008-04-16 09:50:00.000 20029
2008-04-16 10:50:00.000 20029
2008-04-16 11:50:00.000 20029
2008-04-16 12:50:00.000 20029
2008-04-16 13:52:00.000 20029
2008-04-16 14:52:00.000 20029
2008-04-16 15:52:00.000 20029
2008-04-16 16:52:00.000 20029
2008-04-16 17:54:00.000 20029
2008-04-16 18:54:00.000 20029
2008-04-16 19:54:00.000 20029
2008-04-16 20:54:00.000 20029
2008-04-16 21:56:00.000 20029
2008-04-16 22:56:00.000 20029
2008-04-16 23:56:00.000 20029
2008-04-17 00:56:00.000 20029
2008-04-17 01:58:00.000 20029
2008-04-17 02:58:00.000 20029
2008-04-17 03:58:00.000 20029
2008-04-17 04:58:00.000 20029
2008-04-17 06:00:00.000 20029

Т.е. должно получиться типа:
2008-04-14 22:44:00.000 20028
2008-04-15 00:49:00.000 20028
2008-04-15 02:45:00.000 20028
2008-04-15 04:24:00.000 20028
и т.д.

Помогите, пожалуйста.


 
ЮЮ ©   (2008-04-17 11:32) [1]

гораздо проще пробежаться по курсору, чем ломать голову над запросом, тем более что SQL язык для выбора опеределенных звписей, а не екважно каких, лишь бы их проредить, причем слегда.

Самое главное, непонятно зачем?


 
Раиса ©   (2008-04-17 11:36) [2]

Информация поступает с разной периодичностью, а отправлять пользователям надо: кому 1 запись по каждому Id в два часа, кому 1 запись в 6 часов.


 
Кщд   (2008-04-17 11:37) [3]

>Помогите, пожалуйста.
можно подробнее пояснить, что всё-же хочется?


 
Кщд   (2008-04-17 11:38) [4]

>Раиса ©   (17.04.08 11:36) [2]
отсылать ближайшую к началу периода запись по каждому id?


 
ЮЮ ©   (2008-04-17 11:51) [5]

Да уж, кто-то точно "захлкбнется" информацией - два десятка строк за сутки вместо гарантироанных конститутуцией 4х!
А ответственность за то что в пропущенных строках была наиболее важная информация, чем в предоставленной ты берешь на себя?

a "нормальный" - уникальный для каждой записи - Id в таблице есть?


 
ЮЮ ©   (2008-04-17 11:57) [6]

Может её лучше не в виде грида пользователю показывать, а виде графков?


 
Раиса ©   (2008-04-17 12:00) [7]

Есть и поле Identity в таблице, и Id, по которому надо отбирать в нужном диапазоне.
Ответственность за пропущеннные записи беру на себя.


 
Кщд   (2008-04-17 13:18) [8]

>Раиса ©   (17.04.08 12:00) [7]
ответы будут?


 
Павел Калугин ©   (2008-04-17 13:26) [9]


> Т.е. должно получиться типа:


а критерий отбора?


 
Раиса ©   (2008-04-17 15:03) [10]

В заданном диапазоне (например 2 часа) выбирается 1 запись, ближайшая по времени. Пример приведен выше из выборки.
Мне непонятно, что непонятно вам. Критерий сформулировать сложно.... хотя запрос-то мне помогла написать колллега...но уверенности нет....


 
Johnmen ©   (2008-04-17 15:12) [11]


> Раиса ©   (17.04.08 15:03) [10]
> В заданном диапазоне (например 2 часа) выбирается 1 запись,
>  ближайшая по времени.

Диапазон задается не продолжительностью, а началом и концом.
Вот и формулируй критерий выборки соответственно...
И лучше в максимально формализованном виде.


 
Anatoly Podgoretsky ©   (2008-04-17 16:13) [12]

Группирование по 2 часам делается путем умножения dt на 12 и приведением к целому


 
Раиса ©   (2008-04-17 16:43) [13]

Anatoly Podgoretsky ©   (17.04.08 16:13) [12]
Да, идея, предложенная мне моей коллегой, близка к вашему предложению.


 
Anatoly Podgoretsky ©   (2008-04-17 16:58) [14]

> Раиса  (17.04.2008 16:43:13)  [13]

У меня не только предложение, у меня эта техника используется для групирования интервалов по 5 минут, константа равна 24*12, что еще лучше можно придуматьЮ как прямо получить эти интервалы в виде целого, по которому автоматически получается группировка. Я использую СУБД, которая позволяет выражения где угодно.


 
Раиса ©   (2008-04-17 17:14) [15]

Вот мой запрос:

select _id,dd,min(datetime) as datetime from (
select _id,
cast(convert(char(8),datetime,112)+" "+cast((datepart(hh,datetime)-datepart(hh,datetime) %2) as varchar(10))+":00:00" as datetime) as dd
,datetime
from ppp a
where curdatetime>="20080415"
and _id in (20028,20029)
) aa
group by _id,dd
order by _id,dd


В качестве dd можно как Вы предложили: cast(cast(datetime as float)*24 as int) as dd.

Anatoly Podgoretsky ©   (17.04.08 16:58) [14]
А пример Вашего работающего запроса можно?


 
Anatoly Podgoretsky ©   (2008-04-17 18:59) [16]

> Раиса  (17.04.2008 17:14:15)  [15]

Мне его уже не найти, там где он использовался, уже работает другая технология, которая тоже уже убита.
Но это что то подобное этому GROUP BY cast(Fld * 288 AS Integer) ORDER BY Fld * 288



Страницы: 1 вся ветка

Текущий архив: 2008.11.02;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
15-1221112876
Slider007
2008-09-11 10:01
2008.11.02
С днем рождения ! 11 сентября 2008 четверг


1-1201255928
salexn
2008-01-25 13:12
2008.11.02
Анализ подключенных модулей


2-1222330966
Nick87
2008-09-25 12:22
2008.11.02
Delete + Update


3-1208684818
Pilum
2008-04-20 13:46
2008.11.02
Каковы сравнительные преимущества FB/IB и MySql в разработке MU?


2-1222435595
workbench
2008-09-26 17:26
2008.11.02
Uninstall