sql编写

h_0724 2019-09-06 11:47:36
部门表 table1(部门、姓名、职务、薪水),查询各个开发部的程序员,和各个维护部的维护工程师薪水在1000元以上的超过10个人的部门的总个数。
...全文
277 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ucdos781210 2019-09-27
  • 打赏
  • 举报
回复
你这是要建表,还是做查询,提问的有点模糊,回答的也不对症。
老大i 2019-09-10
  • 打赏
  • 举报
回复
引用 4 楼 h_0724 的回复:
[quote=引用 1 楼 老大i 的回复:]
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 部门表.部门,职务
这是两次查询吗?[/quote]可以改用一条查询的。
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 部门表.职务='维护工程师'))
h_0724 2019-09-09
  • 打赏
  • 举报
回复
我现在都有点晕,到底要不要在加职务是程序员和维护工程师?
h_0724 2019-09-09
  • 打赏
  • 举报
回复
引用 1 楼 老大i 的回复:
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 部门表.部门,职务
这是两次查询吗?
老大i 2019-09-06
  • 打赏
  • 举报
回复
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 部门表.部门,职务
BlueStorm 2019-09-06
  • 打赏
  • 举报
回复
这种问提问的很混乱,基本上就是叫人猜谜。
BlueStorm 2019-09-06
  • 打赏
  • 举报
回复
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

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧