写一个sql查询,展示系统中总部各部门每个人的参会次数、参会角色和参会共计时长
时间: 2024-03-21 15:39:56 浏览: 92
SQLserver2008存储过程编写(有参和无参)
5星 · 资源好评率100%
好的,以下是一个SQL查询语句可以展示系统中总部各部门每个人的参会次数、参会角色和参会共计时长:
```
SELECT dept.name AS 部门名称, emp.name AS 姓名,
COUNT(meeting.id) AS 参会次数,
GROUP_CONCAT(DISTINCT role.name ORDER BY role.id SEPARATOR ', ') AS 参会角色,
SUM(TIMESTAMPDIFF(MINUTE, meeting.start_time, meeting.end_time)) AS 参会时长
FROM meeting_participant
JOIN meeting ON meeting_participant.meeting_id = meeting.id
JOIN employee emp ON meeting_participant.employee_id = emp.id
JOIN department dept ON emp.department_id = dept.id
JOIN meeting_role role ON meeting_participant.role_id = role.id
WHERE dept.parent_id IS NULL
GROUP BY dept.id, emp.id;
```
这个查询语句假设系统中的部门采用树形结构,总部的部门 `parent_id` 为 NULL。查询结果将按照部门名称和姓名分组,显示每个人参会的次数、角色和总时长。其中,`GROUP_CONCAT` 函数将每个人在不同会议中担任的角色用逗号分隔并拼接成一个字符串。`TIMESTAMPDIFF` 函数计算参会时长,单位为分钟。
请根据您实际的数据表结构和需求进行修改和定制化。
阅读全文