怎样用SQL语句查询大于50人部门的男女各自的人数,应该是要用子查询吧,应该怎么写,表中有部门的ID等等
SELECT 部门, 性别, COUNT(*) as 人数
FROM 雇员表
GROUP BY 部门, 性别
HAVING COUNT(*) > 50;
【以下回答由 GPT 生成】
SELECT
d.department_id,
d.department_name,
COUNT(CASE WHEN e.gender = '男' THEN 1 END) AS male_count,
COUNT(CASE WHEN e.gender = '女' THEN 1 END) AS female_count
FROM
departments d
JOIN
employees e ON d.department_id = e.department_id
GROUP BY
d.department_id,
d.department_name
HAVING
COUNT(CASE WHEN e.gender = '男' THEN 1 END) > 50
AND COUNT(CASE WHEN e.gender = '女' THEN 1 END) > 50;
解决方案说明: 1. 使用 JOIN 语句将 departments 表和 employees 表连接起来,连接关键字是 departments 表的 department_id 字段和 employees 表的 department_id 字段。 2. 使用 COUNT 和 CASE WHEN 语句分别计算男性和女性员工的人数。当 gender 字段等于 '男' 时,男性计数加1;当 gender 字段等于 '女' 时,女性计数加1。 3. 使用 GROUP BY 子句将结果按部门的 department_id 和 department_name 分组。 4. 使用 HAVING 子句过滤结果,保留男性和女性人数均大于50的部门。 5. 返回的结果中包含部门的 department_id、department_name、male_count(男性人数)和female_count(女性人数)字段。
注意:以上 SQL 语句是一种示例,具体的表名、字段名需根据实际情况进行调整。如果原始数据表结构有差异,请自行调整查询语句中的表名和字段名。如果有其他问题,请提供更多信息以便我进行进一步的帮助。
【相关推荐】