1 查询字段数据,可以直接使用字段别名查询。
SELECT 系统, ob_id AS 服务器, 凭证个数, 使用凭证, 使用时长(秒)
, 使用次数, 最后使用人, 最后使用时间
FROM (
SELECT ra_target_resource_id, ra_credential_id AS 使用凭证
, SUM(TIMESTAMPDIFF(SECOND, ra_start_time, ra_end_time)) AS 使用时长(秒)
, COUNT(ra_credential_id) AS 使用次数, gs_requester_id AS 最后使用人
, MAX(ra_start_time) AS 最后使用时间
FROM am_ucmrecordedapp
2 usageLog 虚拟表 别名 as 别名 (as可以去掉)
am_ucmrecordedapp 左表
LEFT JOIN
am_ucmgwsession
左连接 查询
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉
SELECT 系统, ob_id AS 服务器, 凭证个数, 使用凭证, 使用时长(秒) , 使用次数, 最后使用人, 最后使用时间 FROM ( SELECT ra_target_resource_id, ra_credential_id AS 使用凭证 , SUM(TIMESTAMPDIFF(SECOND, ra_start_time, ra_end_time)) AS 使用时长(秒) , COUNT(ra_credential_id) AS 使用次数, gs_requester_id AS 最后使用人 , MAX(ra_start_time) AS 最后使用时间 FROM am_ucmrecordedapp LEFT JOIN am_ucmgwsession ON ra_short_session_id = gs_short_session_id WHERE (ra_credential_id != 'null' AND ra_end_time != 'null' AND ra_start_time > '2018-01-01' AND ra_end_time < '2018-12-31') GROUP BY ra_credential_id ) usageLog LEFT JOIN ( SELECT ob_description AS 系统, ob_id, COUNT(cr_targetrsc_uuid) AS 凭证个数 FROM am_object LEFT JOIN am_ucmcred ON cr_targetrsc_uuid = ob_uuid WHERE ob_object_class = 'PasswordTargetResource' GROUP BY cr_targetrsc_uuid ORDER BY ob_description ) connInfo ON usageLog.ra_target_resource_id = connInfo.ob_id WHERE 系统 = 'centos' ORDER BY connInfo.系统;