powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / запрос
12 сообщений из 12, страница 1 из 1
запрос
    #32335369
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос, в котором выбираются данные за определенный период
времени.В базе отсутствуют данные на некоторые часы.Как выловить
за какие (вывести предупреждение).
...
Рейтинг: 0 / 0
запрос
    #32335426
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перебором необходимых временных интервалов и проверки количества значений в этих интервалах. Реализуется через ХП.
...
Рейтинг: 0 / 0
запрос
    #32335553
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
????????
...
Рейтинг: 0 / 0
запрос
    #32335628
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не сильно знаком с интербейзом, но по идее эта задача решается так (В примере использован диалект Transact-SQL MS SQL Server)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 -- this is an aux table
 
create table numbers (num int not null primary key);
 -- fill this table with int values from 0 up to (for example) 1000
 
 -- Suppose you have a data
 
create table tmp_data (dt date not null primary key,
data_val int not null,
name varchar( 20 ) not null);

insert into tmp_data (dt, data_val, name)
values ('2003-11-26 10:00:00',  2 , 'sss');
insert into tmp_data (dt, data_val, name)
values ('2003-11-26 11:00:00',  22 , 'jhjkh');
insert into tmp_data (dt, data_val, name)
values ('2003-11-26 14:00:00',  64 , 'fsdf');
insert into tmp_data (dt, data_val, name)
values ('2003-11-26 19:00:00',  2 , 's87');

select t.dt, dt.data_val, 
case when dt.name is null then 'No data' else dt.name end as name
from tmp_data dt right outer join (select date_add( hh, '2003-11-26 09:00:00', num) as dt
from numbers
where num between  0  and  12 ) t on t.dt = dt.dt
...
Рейтинг: 0 / 0
запрос
    #32336087
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2natascha
если я правильно понимаю, просто надо проверить
в каких записях эти значения равны null?
...
Рейтинг: 0 / 0
запрос
    #32340879
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неграмотно я,видно,спрашиваю.Извините,начинающая. Допустим:'select *from table where tim between '01.12.2003 01:00' and '01.12.2003 10:00' '. На определенные часы записи отсутствуют . Нет ли для этого случая стандартной проверки, я просто многого не знаю. Спасибо за ответ и пример.
...
Рейтинг: 0 / 0
запрос
    #32342190
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для чего это надо?
...
Рейтинг: 0 / 0
запрос
    #32342247
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не врублюсь...
Т.е. если с 10 до 11 часов нет ни одной записи, надо об этом сообщить? И если с 13 до 14 - тоже. А минуты все в нуле? Т.е. интервалы времении в формате чч:мм представляются с xx:00 по (xx+1):00
Если что не так - приведите пример, чтобы Вас поняли, чтоли...
...
Рейтинг: 0 / 0
запрос
    #32342325
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да,'hh:00'. Проверка часовых данных. Надо для того, кто прозевал.Я уже поняла,что, скорее всего, ничего стандартного нет,придется перебирать.
...
Рейтинг: 0 / 0
запрос
    #32342420
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может лучше вычислять интервал между записями и если он больше, чем нужно... принимать меры
...
Рейтинг: 0 / 0
запрос
    #32342521
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред какой-то, каких часовых данных. Где это применяется. Условие задачи в студию...

(извините, за грубость)
...
Рейтинг: 0 / 0
запрос
    #32344801
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может что-то наподобие этого:

select t1.tim,(select min(t3.tim) from tab t3 where t3.tim>t1.tim)
from tab t1
where not exists ( select id from tab t2
where t1.tim>t2.tim+0.03472222222222222222
and t1.tim<t2.tim+0.04861111111111111111)

где 0.03472222222222222222 == 50 мин
0.04861111111111111111 == 70 мин - допустимый разброс по времени
в результате:
первое поле - последняя запись до пропуска
второе поле - первая запись после пропуска
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]