powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужна помощь в корректировке запроса
9 сообщений из 9, страница 1 из 1
Нужна помощь в корректировке запроса
    #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
Нужна помощь в корректировке запроса
    #39229717
bv7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bv7
Гость
Гуру, помощь очень нужна. Проникнитесь вопросом.
Как один из вариантов, можно необходимые данные в MySQL или MSSQL передать.
...
Рейтинг: 0 / 0
Нужна помощь в корректировке запроса
    #39229778
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bv7,

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

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

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

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

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

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

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

Оффтоп.

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

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

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

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


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