|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - [решено] SQLite: поместить результаты запроса в нужные поля таблицы |
|
|
Прочие БД - [решено] SQLite: поместить результаты запроса в нужные поля таблицы
|
Старожил Сообщения: 211 |
Доброго времени суток! Недавно познакомился с базой sqlite, мне так понравилось, что я решил хранить и накапливать некоторые данные именно в базе. Получать эти данные я хотел бы сразу в нужном виде, но я пока не могу составлять сложные запросы.
Дано: в таблицу собираются данные о факте логона пользователя на пк. Информация: имя пк, логин пользователя, дата время, тип логона. Компьютеров в таблице тысячи, пример только для одного из них (см.причину исправления сообщения). пример данных в таблице
WorkstationName TargetUserName TimeCreated logontype name1 user1 21.09.2021 10:15 2 name1 user1 22.09.2021 14:19 2 name1 user1 21.09.2021 12:01 2 name1 user2 21.09.2021 15:06 2 name1 user2 22.09.2021 10:21 2 name1 user2 22.09.2021 15:01 2 name1 user2 22.09.2021 15:18 2 name1 user2 21.09.2021 15:59 2 name1 user2 22.09.2021 12:05 2 name1 user2 21.09.2021 10:32 2 name1 user2 21.09.2021 15:32 2 name1 user2 22.09.2021 10:24 2 name1 user2 21.09.2021 17:12 2 name1 user2 22.09.2021 15:51 2 name1 user3 21.09.2021 10:31 2 name1 user3 22.09.2021 10:33 2 name1 user3 22.09.2021 15:36 2 name1 user3 21.09.2021 14:11 2 name1 user3 22.09.2021 14:08 2 name1 user3 21.09.2021 10:32 2 name1 user3 22.09.2021 10:33 2 name1 user3 21.09.2021 12:07 2 name1 user3 22.09.2021 12:41 2 name1 user4 21.09.2021 14:44 2 name1 user4 22.09.2021 13:15 2 Задача: посчитать сколько раз вообще логинились на одном пк из спика, посчитать количество логонов на данном пк для каждого юзера, создать таблицу где поместим все эти данные в одну строку. Если пользователей одного пк больше чем 3, то оставить только 3 наибольших по кол-ву входов. Если пользователи имеют одинаковое кол-во входов, то выбрать по ближайшей дате логона. Учет вести только логоны не старше 100 дней, используя столбец даты времени. Все это для каждого ПК в таблице. пример желаемого результата из примера выше
создать табицу из запроса могу: посчитать сколько логонов всего для одного ПК могу: ответ на запрос: посчитать сколько логонов для каждого из пользователей могу: select WorkstationName, TargetUserName, Count(*) from test group by WorkstationName, TargetUserName, TargetUserName; Отфильтровать записи младше 100 дней, скорее всего можно будет через Where. А вот дальше начинаются вопросы. Как создать таблицу в нужном виде, учитывая условия? Возможно прибегнуть к временным таблицам? Буду рад любой помощи! |
|
Отправлено: 15:13, 24-09-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата Griboed0ff:
|
||
Последний раз редактировалось Iska, 26-09-2021 в 14:31. Причина: Замечание коллеги El Sanchez ниже Отправлено: 01:57, 25-09-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 11:40, 25-09-2021 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Griboed0ff, я имею в виду, что данное актуальное (!) представление можно в любой момент получить запросом.
|
Отправлено: 12:04, 25-09-2021 | #4 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Griboed0ff, Скрытый текст
SELECT WorkstationName, sum(user_logon_count) OVER () AS all_logon, nth_value(TargetUserName, 1) OVER () AS "user 1", nth_value(user_logon_count, 1) OVER () AS "user 1 logon", nth_value(TargetUserName, 2) OVER () AS "user 2", nth_value(user_logon_count, 2) OVER () AS "user 2 logon", nth_value(TargetUserName, 3) OVER () AS "user 3", nth_value(user_logon_count, 3) OVER () AS "user 3 logon" FROM ( SELECT * FROM ( SELECT *, printf('%s-%s-%s %s:00', substr(TimeCreated, 7, 4), substr(TimeCreated, 4, 2), substr(TimeCreated, 1, 2), substr(TimeCreated, 12) ) AS time_created, count(1) OVER (PARTITION BY TargetUserName) AS user_logon_count FROM pc_users WHERE WorkstationName = 'name1' AND time_created > datetime('now', '-100 days') ORDER BY user_logon_count DESC, time_created DESC ) GROUP BY TargetUserName ORDER BY user_logon_count DESC LIMIT 3 ) LIMIT 1 |
||
Отправлено: 13:33, 26-09-2021 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать El Sanchez, я вообще охренел, когда увидел * и просто имена полей в выборке с группировкой
![]() |
Отправлено: 14:31, 26-09-2021 | #6 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Iska:
― Надо! (из к/ф "Джентельмены удачи") Цитата Iska:
|
||
Отправлено: 15:26, 26-09-2021 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать El Sanchez, нет, я об общем принципе, который видел в соседней теме. Например:
Field1 Field2 Field3 АААА ЯЯЯЯ Группа1 ББББ ЮЮЮЮ Группа2 ВВВВ ЭЭЭЭ Группа1 ГГГГ ФФФФ Группа2 ДДДД ХХХХ Группа2 Какие значения попадут в поля Field1 и Field2 обеих строк результирующей выборки подобного запроса в SQLite? |
Отправлено: 16:05, 26-09-2021 | #8 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
|
||
Последний раз редактировалось El Sanchez, 27-09-2021 в 16:44. Отправлено: 10:51, 27-09-2021 | #9 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
|
|
Последний раз редактировалось Griboed0ff, 28-09-2021 в 12:48. Отправлено: 20:29, 27-09-2021 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MSFT SQL Server - [решено] Некоторые поля одной таблицы синкать с полями другой таблицы | uptk | Программирование и базы данных | 5 | 01-09-2014 20:29 | |
MySQL - Тип данных для поля ключевого поля | Ali002 | Программирование и базы данных | 8 | 22-04-2014 22:09 | |
Удаление записей таблицы по данным другой таблицы | xNiSSaNx | Вебмастеру | 4 | 02-08-2013 21:58 | |
Установка - [решено] Обновления от Microsoft: нужные, не нужные. Польза или вред. | flev45 | Microsoft Windows 7 | 18 | 29-09-2010 13:05 | |
MSFT SQL Server - результаты запроса в виде текстового файла и его обработка | minusodin | Программирование и базы данных | 7 | 30-03-2010 15:48 |
|