Для одноразового упражнения (при условии, что базовая таблица не слишком велика), простым решением является подзапрос. Выберите всех удаленных пользователей, затем найдите все соответствующие активированные записи с более поздней датой события:
with del as (
select user_id
, event_date as date_deleted
from user_events
where event_type = 'USER_DELETED'
)
select del.user_id
, del.date_deleted
, act.event_date as date_activated
from del
join user_events act
on act.user_id = del.user_id
where act.event_type = 'USER_ACTIVATED'
and del.date_deleted < act.event_date
order by del.user_id
/
Как показывают другие ответы, существует много способов написать выше. Другое простое решение - самосоединение:
select del.user_id
, del.date_deleted
, act.event_date as date_activated
from user_events del
join user_events act
on act.user_id = del.user_id
where del.event_type = 'USER_DELETED'
and act.event_type = 'USER_ACTIVATED'
and del.date_deleted < act.event_date
order by del.user_id
/
Смотрите на Apache Демон палаты общин.
Это имеет 'jsvc' средство запуска, которое поддерживает запуск и остановку основанных на Java демонов (сервисы).
Во-первых, сохранение PID на *отклоняет:
$ ./yourprogram &
$ echo $! > /var/run/yourpid
yourpid будет теперь содержать PID yourpgram, и/var/run является надлежащим местом для помещения его.
Вышеупомянутое может быть помещено в Ваш сценарий "запуска". Сценарий "остановки" может посмотреть на yourpid для знания, что уничтожить.
Если Вы хотите быть более изящными и остановить Ваше приложение правильно, можно посмотреть на исходный код для org.apache.catalina.startup Tomcat. Catalina.java о том, как реализовать надлежащие рычаги завершения работы.
Во-вторых, выше "остановки" и "запускаются", сценарии могут затем быть помещены в/etc/init.d/mystopstartscript:
#!/bin/bash
# processname: yourprogram
# pidfile: /var/run/yourpid
case $1 in
start)
sh /some/where/start.sh
;;
stop)
sh /some/where/stop.sh
;;
restart)
sh /some/where/stop.sh
sh /some/where/start.sh
;;
esac
exit 0
Это - довольно решение собственной разработки с идеями, главным образом взятыми от хорошего 'ol Tomcat, но я надеюсь, что он помогает :)