如何解决Oracle SQL查询视图登录会话和用户名
我有一个查询,有人在这里帮助我处理了登录会话的详细信息,并将其组合以进行绘图,但是在单击日期时似乎也需要查看这些用户,我们为此使用了元数据库
原始数据如下:
+-------------------+---------------------+-----------+---------------+-------------------+---------------------+---------------------+--------------+---------+----------+
| Lo Gon Session ID | Authentication Type | Node Name | Server IP | Session End Cause | Session Finish Time | Session Start Time | Session Type | User ID | Username |
+-------------------+---------------------+-----------+---------------+-------------------+---------------------+---------------------+--------------+---------+----------+
| 45294 | USERNAME_PASSWORD | prod_3 | 10.244.17.137 | SESSION_TIMEOUT | 2020-07-27T18:06:07 | 2020-07-27T17:01:50 | WEB | 100698 | kekane_k |
| 45640 | USERNAME_PASSWORD | prod_3 | 10.244.17.137 | SESSION_TIMEOUT | 2020-08-03T13:50:08 | 2020-08-03T10:45:35 | WEB | 100440 | mabula_s |
| 45793 | USERNAME_PASSWORD | prod_4 | 10.244.17.137 | SESSION_TIMEOUT | 2020-08-05T10:54:12 | 2020-08-05T09:35:33 | WEB | 102129 | hoose_s |
| 45798 | USERNAME_PASSWORD | prod_4 | 10.244.17.137 | SESSION_TIMEOUT | 2020-08-05T11:43:48 | 2020-08-05T10:34:26 | WORKBENCH | 100348 | phalat_k |
| 45466 | USERNAME_PASSWORD | prod_3 | 10.244.17.137 | SIGN_OUT | 2020-07-30T08:38:09 | 2020-07-30T08:38:05 | WEB | 101688 | jazzuser |
| 45468 | USERNAME_PASSWORD | prod_3 | 10.244.17.137 | SESSION_TIMEOUT | 2020-07-30T13:30:37 | 2020-07-30T09:24:58 | WEB | 100698 | kekane_k |
| 45687 | USERNAME_PASSWORD | prod_3 | 10.244.17.137 | SESSION_TIMEOUT | 2020-08-03T21:42:09 | 2020-08-03T17:01:18 | WEB | 101273 | nel_d |
+-------------------+---------------------+-----------+---------------+-------------------+---------------------+---------------------+--------------+---------+----------+
我们的SQL查询如下:
with temp as (
select
trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_START_TIME",'hh') as "dte",1 as "inc"
from "PPM"."PPM_logoN_SESSIONS"
where
(trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_START_TIME",'hh'))
between (trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_START_TIME",'hh'))
and (trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_FINISH_TIME",'hh'))
and "SESSION_START_TIME" > trunc((CAST(SYSDATE AS timestamp) + numtodsinterval(-30,'day')),'day')
union all
select
trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_FINISH_TIME",-1 as "inc"
from "PPM"."PPM_logoN_SESSIONS"
where
(trunc("PPM"."PPM_logoN_SESSIONS"."SESSION_START_TIME",'day')
)
select
max("concurrent") as "concurrent",trunc("dte",'dd') as "dte"
from
(
select *
from (
select
trunc("dte",'dd') as "dte",sum(sum("inc")) over (order by "dte") as "concurrent"
from temp
group by "dte"
)
)
where "dte" > trunc((CAST(SYSDATE AS timestamp) + numtoyminterval(-4,'month')),'month')
group by trunc("dte",'dd')
order by "dte" desc
它提供了这样的图形
+----------------------+----------+
| Time Stamp | Username |
+----------------------+----------+
| 2020-07-27T18:00:00 | kekane_k |
| 2020-07-27T18:01:00 | mabula_s |
| 2020-07-27T18:20:00 | hoose_s |
| 2020-07-27T18:20:00 | phalat_k |
| 2020-07-27T18:20:00 | jazzuser |
| 2020-07-27T18:40:00 | kekane_k |
| 2020-07-27T18:40:00 | nel_d |
| 2020-07-27T19:022:00 | sekget_g |
| 2020-07-27T19:022:00 | vanton_e |
| 2020-07-27T19:022:00 | marai_h |
| 2020-07-27T19:022:00 | crawfo_r |
| 2020-07-27T19:022:00 | hamman_k |
+----------------------+----------+
其中用户按相同的时间戳分组,因此,如果用户登录3分钟,则名称将出现在分钟1,分钟2和分钟3中,但是将从分钟4中将其删除,在分钟2中将其删除另外3 users logon意味着至少2分钟内应该有3个用户。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。