Wel*_*lsh 1 sql oracle plsql oracle10g
我正在尝试创建一个查询,列出Oracle 10g数据库中每个用户名的每台计算机的活动,非活动和总连接数.
我有以下查询:
SELECT count(1) AS con_count, machine, username
FROM v$session
WHERE type <> 'BACKGROUND'
GROUP BY username, machine
ORDER BY con_count DESC;
Run Code Online (Sandbox Code Playgroud)
这将列出每个用户每个计算机的总连接数的计数,但是在调整它以将活动,非活动和总连接计数作为一个一体化查询时很难.
所以结果应该是这样的:
ACTIVE INACTIVE TOTAL MACHINE USERNAME
Run Code Online (Sandbox Code Playgroud)
我可以让查询执行前三列之一,但不能同时执行所有三列.
任何帮助将不胜感激,因为我的SQL非常非常生疏.
列status的v$session视图包含有关活动和非活动会话的信息.所以您可以按如下方式重新编码查询:
SELECT s.machine
, s.username
, count(decode(s.STATUS, 'ACTIVE', 1)) as active_con
, count(decode(s.STATUS, 'INACTIVE', 1)) as inactive_con
, count(*) as total_con
FROM v$session s
WHERE type <> 'BACKGROUND'
GROUP BY username, machine
ORDER BY total_con DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8584 次 |
| 最近记录: |