Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужна помощь в корректировке запроса / 9 сообщений из 9, страница 1 из 1
06.04.2016, 13:26
    #39209216
bv7
bv7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Сервер Sybase ASA 11

экспорт производился идущим в комплекте ISQL в текстовые файлы с разделителями. Скрипт создания БД и файлы экспорта во вложении. В ISQL вроде как есть возможность импортировать содержимое экспортированных файлов в новые таблицы без предварительного их создания.

При выполнении запроса по факту получаются некорректные данные

Код: sql
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.
26.
27.
28.
29.
30.
31.
SELECT ID = ROW_NUMBER() OVER (order by CL.CLIENT_ID, PR.DATE_TIME)
            ,DATE_TIME_CNV = CONVERT(varchar, PR.DATE_TIME, 104) + ' ' + CONVERT(varchar, PR.DATE_TIME, 108)
            ,PR.DATE_TIME
            ,PR.MESS_ID
            ,CL.CLIENT_ID
            ,CL.SURNAME
            ,CL.NAME
            ,CL.PATR
INTO #tt1
FROM DBA.PROTOCOL PR
        INNER JOIN CLIENT CL
            ON (PR.CLIENT_ID = CL.CLIENT_ID)
        INNER JOIN ZONE Z
            ON (PR.ZONE_ID = Z.ZONE_ID)
WHERE PR.DATE_TIME BETWEEN CONVERT(DATETIME, '2016-02-01') AND CONVERT(DATETIME, '2016-03-01')

SELECT PROPUSK_ID = A.CLIENT_ID
       ,IN_DTIME = A.DATE_TIME_CNV 
       ,OUT_DTIME = B.DATE_TIME_CNV2
       ,SUBSTRING(A.ZONE_NAME, 0, CASE WHEN CHARINDEX(',', A.ZONE_NAME) = 0 THEN LEN(A.ZONE_NAME) ELSE CHARINDEX(',', A.ZONE_NAME) END)
       ,SUBSTRING(B.ZONE_NAME, 0, CASE WHEN CHARINDEX(',', B.ZONE_NAME) = 0 THEN LEN(B.ZONE_NAME) ELSE CHARINDEX(',', B.ZONE_NAME) END)
       ,TABEL_NUM = A.TABEL_NUM
       ,FIO = A.SURNAME + ' ' + A.NAME + ' ' + A.PATR
FROM #tt1 A
    INNER JOIN (
                    SELECT ID = ID - 1, DATE_TIME, DATE_TIME_CNV as DATE_TIME_CNV2, ZONE_NAME, SURNAME, NAME,  PATR
                    FROM #tt1 C WHERE MESS_ID = 86
               ) B
        ON (A.ID = B.ID)
WHERE A.MESS_ID = 85
ORDER BY IN_DTIME



По факту человек ходил

1'01.02.2016 07:55:37''2016-02-01 07:55:37.926'854194305'Фамилия''Имя''Отчество''14048''П.О. №6 Шлагбаум'2'01.02.2016 07:55:37''2016-02-01 07:55:37.935'854194305'Фамилия''Имя''Отчество''14048''П.О. №6 Шлагбаум V.I.P.'3'01.02.2016 07:59:26''2016-02-01 07:59:26.908'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'4'01.02.2016 08:03:42''2016-02-01 08:03:42.107'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'5'01.02.2016 08:50:53''2016-02-01 08:50:53.796'854194305'Фамилия''Имя''Отчество''14048''П.О. №11 Проходная Турникет-2 ВХ'6'01.02.2016 09:15:46''2016-02-01 09:15:46.223'864194305'Фамилия''Имя''Отчество''14048''П.О. №11 Проходная Турникет-1 ВЫХ'7'01.02.2016 09:37:08''2016-02-01 09:37:08.366'854194305'Фамилия''Имя''Отчество''14048''П.О. №1 Проходная Турникет-1 ВХ'8'01.02.2016 09:41:34''2016-02-01 09:41:34.987'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'9'01.02.2016 09:44:52''2016-02-01 09:44:52.776'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'10'01.02.2016 09:57:58''2016-02-01 09:57:58.354'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'11'01.02.2016 11:03:04''2016-02-01 11:03:04.585'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'12'01.02.2016 13:41:57''2016-02-01 13:41:57.568'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'13'01.02.2016 13:45:07''2016-02-01 13:45:07.337'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'14'01.02.2016 13:53:21''2016-02-01 13:53:21.647'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'15'01.02.2016 14:05:39''2016-02-01 14:05:39.086'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'16'01.02.2016 14:05:58''2016-02-01 14:05:58.985'784194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'17'01.02.2016 15:41:33''2016-02-01 15:41:33.067'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 1-й Этаж ВХОД'18'01.02.2016 16:21:08''2016-02-01 16:21:08.943'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'19'01.02.2016 16:22:58''2016-02-01 16:22:58.538'854194305'Фамилия''Имя''Отчество''14048''П.О. №4 2-й эт'20'01.02.2016 17:01:39''2016-02-01 17:01:39.013'864194305'Фамилия''Имя''Отчество''14048''Пост №5 Шлагбаум V.I.P.'

На выходе получится, что человек опоздал на работу.

4199005'01.02.2016 08:50:53''01.02.2016 17:01:39''П.О. №11 Проходная Турникет-2 ВХ''Пост №5 Шлагбаум V.I.P.''Фамилия Имя Отчество'
Т.е. из списка берется второй, третий и тд. вход и последний выход, необходимо взять первый вход и последний выход для каждого сотрудника.

Должно быть так
4199005 '01.02.2016 07:55:37' '01.02.2016 17:01:39' 'П.О. №11 Проходная Турникет-2 ВХ' 'Пост №5 Шлагбаум V.I.P.' 'Фамилия Имя Отчество'

Файлы (создание БД и данные для таблиц)
...
Рейтинг: 0 / 0
05.05.2016, 11:39
    #39229717
bv7
bv7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Гуру, помощь очень нужна. Проникнитесь вопросом.
Как один из вариантов, можно необходимые данные в MySQL или MSSQL передать.
...
Рейтинг: 0 / 0
05.05.2016, 12:34
    #39229778
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
bv7,

Сгруппируй по датам (без времени) и клиентам с получением минимального времени входа и максимального времени выхода на каждую дату
...
Рейтинг: 0 / 0
05.05.2016, 13:53
    #39229890
Нужна помощь в корректировке запроса
antand,

а вдруг человек работал в ночную смену? пришел на работу вчера вечером, ушёл - сегодня утром.
или утром заходя на работу сделал это с кем-то (у нас в турникет даже трое могут пропихнуться, а в шлагбаум так и целым цыганским табором зайти можно, ибо время его нахождения в открытом состоянии - 10-15 секунд)

тут без признака вход/выход любое решение будет лишь частным случаем подгонки под правильный ответ.
...
Рейтинг: 0 / 0
05.05.2016, 14:47
    #39229948
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Добрый Э - Эх,

А чем отличить в приведенном примере данных вход как первый вход на работу от других?
...
Рейтинг: 0 / 0
05.05.2016, 15:21
    #39229981
Нужна помощь в корректировке запроса
antand,

Потому и говорю, что в такой постановке задача не имеет общего решения. Можно лишь рассматривать частные случаи, и то - при соблюдении определённых условий
...
Рейтинг: 0 / 0
05.05.2016, 15:49
    #39230039
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Добрый Э - Эх,

Я и рассмотрел этот случай, вдруг он автору подойдет.

А так согласен, конечно. Все зависит от решаемой задачи.
На приведенных данных и с вашими особенностями задача "опоздал или нет" не решается.
...
Рейтинг: 0 / 0
06.05.2016, 21:20
    #39231123
bv7
bv7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Спасибо за группировку.

Оффтоп.

antandДобрый Э - Эх,

А чем отличить в приведенном примере данных вход как первый вход на работу от других?

Как отличить ... в моем случае это уже не я буду думать. Данные берутся за прошедший месяц и выгружаются в файл. Далее полученный файл грузится в 1С (на прямую данные из одной БД в другую залить нельзя, религия в лице безопасников, запрещает). Собственно там и происходит вторая часть аналитики.

antand(...у нас в турникет даже трое могут пропихнуться, а в шлагбаум так и целым цыганским табором зайти можно, ибо время его нахождения в открытом состоянии - 10-15 секунд)
В этом случае политика жесткая - опоздание или ранний уход на 1 минуту вплоть до увольнения может дойти, а доказывать, что ты не верблюд и вообще "у вас часы не правильно идут", на эту тему будешь уже "за забором" разглагольствовать. Время пришлось с КД синхронизировать. Синхронизация идет каждые 64 секеунды, так что разбег составляет 0,0Х секунд, сказали такой точности достаточно.
...
Рейтинг: 0 / 0
02.06.2016, 19:48
    #39249512
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в корректировке запроса
Модератор: Закрыто по просьбе TC
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужна помощь в корректировке запроса / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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