SELECT COUNT(姓名) AS 开发部的程序员个数,部门表.部门,职务 FROM 部门表 LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门 WHERE 薪水>1000 AND 各部门人数.人数>10 AND 部门表.部门='开发部' AND 职务='程序员' GROUP BY 部门表.部门,职务SELECT COUNT(姓名) AS 维护部的维护工程师个数,部门表.部门,职务 FROM 部门表 LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门 WHERE 薪水>1000 AND 各部门人数.人数>10 AND 部门表.部门='维护部' AND 职务='维护工程师' GROUP BY 部门表.部门,职务
CREATE TABLE department (deptname nvarchar(16), empname varchar(8), occu varchar(8), salary numeric(12,2))SELECT deptname, cnt = COUNT(*) FROM department WHERE salary > 1000 AND (deptname LIKE '%开发部%' OR deptname LIKE '%维护部%') GROUP BY deptname HAVING COUNT(*) > 10
这是两次查询吗?可以改用一条查询的。 SELECT DISTINCT 开发部的程序员个数.人数,维护部的维护工程师个数.人数,部门表.部门,部门表.职务 FROM 部门表 LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门 LEFT JOIN (SELECT 部门,职务,COUNT(姓名) AS 人数 FROM 部门表 WHERE 部门='开发部' AND 职务='程序员' GROUP BY 部门,职务) AS 开发部的程序员个数 ON 开发部的程序员个数.部门=部门表.部门 AND 开发部的程序员个数.职务=部门表.职务 LEFT JOIN (SELECT 部门,职务,COUNT(姓名) AS 人数 FROM 部门表 WHERE 部门='维护部' AND 职务='维护工程师' GROUP BY 部门,职务) AS 维护部的维护工程师个数 ON 维护部的维护工程师个数.部门=部门表.部门 AND 维护部的维护工程师个数.职务=部门表.职务 WHERE (薪水>1000 AND 各部门人数.人数>10) AND ((部门表.部门='开发部' AND 部门表.职务='程序员') OR (部门表.部门='维护部' AND 部门表.职务='维护工程师'))
LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门
WHERE 薪水>1000 AND 各部门人数.人数>10 AND 部门表.部门='开发部' AND 职务='程序员'
GROUP BY 部门表.部门,职务SELECT COUNT(姓名) AS 维护部的维护工程师个数,部门表.部门,职务 FROM 部门表
LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门
WHERE 薪水>1000 AND 各部门人数.人数>10 AND 部门表.部门='维护部' AND 职务='维护工程师'
GROUP BY 部门表.部门,职务
FROM department
WHERE salary > 1000
AND (deptname LIKE '%开发部%' OR deptname LIKE '%维护部%')
GROUP BY deptname HAVING COUNT(*) > 10
SELECT DISTINCT 开发部的程序员个数.人数,维护部的维护工程师个数.人数,部门表.部门,部门表.职务 FROM 部门表
LEFT JOIN (SELECT 部门,COUNT(姓名) AS 人数 FROM 部门表 GROUP BY 部门) AS 各部门人数 ON 各部门人数.部门=部门表.部门
LEFT JOIN (SELECT 部门,职务,COUNT(姓名) AS 人数 FROM 部门表 WHERE 部门='开发部' AND 职务='程序员' GROUP BY 部门,职务) AS 开发部的程序员个数
ON 开发部的程序员个数.部门=部门表.部门 AND 开发部的程序员个数.职务=部门表.职务
LEFT JOIN (SELECT 部门,职务,COUNT(姓名) AS 人数 FROM 部门表 WHERE 部门='维护部' AND 职务='维护工程师' GROUP BY 部门,职务) AS 维护部的维护工程师个数
ON 维护部的维护工程师个数.部门=部门表.部门 AND 维护部的维护工程师个数.职务=部门表.职务
WHERE (薪水>1000 AND 各部门人数.人数>10)
AND ((部门表.部门='开发部' AND 部门表.职务='程序员') OR (部门表.部门='维护部' AND 部门表.职务='维护工程师'))