1. select count(1), t.ttName from (
    2. select tmp.*, sys_dept.name as ttName from
    3. (SELECT
    4. sys_login_org.dept_id,
    5. sys_login_log.usr_id,
    6. sys_login_log.usr_name,
    7. sys_login_log.work_no,
    8. sys_login_log.sys_id,
    9. sys_dept.id,
    10. sys_dept.`name`,
    11. sys_dept.path
    12. FROM
    13. sys_login_log,
    14. sys_login_org,
    15. sys_dept
    16. WHERE
    17. sys_login_log.id = sys_login_org.login_id
    18. AND sys_dept.id = sys_login_org.dept_id) tmp
    19. left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',','))
    20. ) t
    21. group by t.ttName
    22. -- where tmp.work_no = '-1'
    23. ;
    24. SELECT
    25. sys_login_log.id as logid,
    26. sys_login_org.dept_id,
    27. sys_login_log.usr_id,
    28. sys_login_log.usr_name,
    29. sys_login_log.work_no,
    30. sys_login_log.sys_id,
    31. -- sys_dept.id,
    32. sys_dept.`name`,
    33. sys_dept.path
    34. FROM
    35. sys_login_log,
    36. sys_login_org,
    37. sys_dept
    38. WHERE
    39. sys_login_log.id = sys_login_org.login_id
    40. AND sys_dept.id = sys_login_org.dept_id
    41. and sys_login_log.usr_id = 817441901144702976
    42. order by sys_login_log.id,sys_login_org.dept_id
    43. ;
    44. select tmp.*, sys_dept.name as ttName, sys_dept.id deptID from (SELECT
    45. sys_login_log.id as logid,
    46. sys_login_org.dept_id,
    47. sys_login_log.usr_id,
    48. sys_login_log.usr_name,
    49. sys_login_log.work_no,
    50. sys_login_log.sys_id,
    51. -- sys_dept.id,
    52. sys_dept.`name`,
    53. sys_dept.path
    54. FROM
    55. sys_login_log,
    56. sys_login_org,
    57. sys_dept
    58. WHERE
    59. sys_login_log.id = sys_login_org.login_id
    60. AND sys_dept.id = sys_login_org.dept_id
    61. and sys_login_log.usr_id = 817441901144702976) tmp
    62. left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',','))
    63. order by tmp.logid,deptID;
    64. select count(1), count(distinct b.usr_id) as access_person,dept_id, name from (
    65. select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
    66. select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
    67. GROUP BY o.login_id
    68. ) a on l.id = a.login_id
    69. left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
    70. -- order by l.id, dept_id
    71. ) b
    72. group by dept_id, name;
    73. select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
    74. select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
    75. GROUP BY o.login_id
    76. ) a on l.id = a.login_id
    77. left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
    78. where dd.id = 1;
    79. -- dept person amount
    80. select
    81. -- a.path, a.user_id,
    82. count(1),
    83. dd.id, dd.name from sys_dept dd INNER JOIN (
    84. select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on
    85. FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
    86. GROUP BY dd.id, dd.name
    87. ;
    88. select count(1) as access_amount, count(distinct b.usr_id) as access_person,dept_id, name, ttt.total_person from (
    89. select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
    90. select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
    91. GROUP BY o.login_id
    92. ) a on l.id = a.login_id
    93. left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
    94. ) b INNER JOIN (
    95. select
    96. count(1) as total_person,
    97. dd.id from sys_dept dd INNER JOIN (
    98. select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on
    99. FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
    100. GROUP BY dd.id) ttt on b.dept_id = ttt.id
    101. group by dept_id, name;