数据库的排序问题

小小白SQL 2018-12-11 09:30:18
本人刚刚学习数据库,奈何水平有限,望各位可以帮忙解决
在这个表格中进行查询。
1 找出销售蓝色产品的部门的名称,这些部门没有超过40岁的员工。

2 找到每个部门的ID和在该部门工作的最年长的人的年龄。

3 找到在“central”部门工作的至少一名员工年龄更大的员工的姓名。

4 找出在没有员工超过40岁的部门工作的员工的名字。

5 找出在销售至少五种产品的部门工作的员工的名字。
希望大神可以帮忙,可以放在数据库验证的答案!

...全文
149 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-12-11
  • 打赏
  • 举报
回复
希望其它人帮助你排除异常, 要做到两点: 1. 能重现错误, 其实也就是要能重现你的现场。 2. 具体的错误信息是什么?
吉普赛的歌 版主 2018-12-11
  • 打赏
  • 举报
回复
不知道你用的什么客户端。 建议你直接用 SQL Server 的客户端, 这样有直接的错误的提示。 或者, 你把每个表的创建脚本, 测试数据也贴出来, 这样人家才好帮你。
小小白SQL 2018-12-11
  • 打赏
  • 举报
回复
引用 8 楼 吉普赛的歌 的回复:
[quote=引用 7 楼 weixin_44051700 的回复:]
[quote=引用 5 楼 吉普赛的歌 的回复:]
第一个是只找出部门的名字,蓝色产品,和年龄不超过40是条件,不去要显示出来,怎么破

我 #5 的不可以吗?[/quote]
后面的每一个都有错误,
小小白SQL 2018-12-11
  • 打赏
  • 举报
回复
引用 8 楼 吉普赛的歌 的回复:
[quote=引用 7 楼 weixin_44051700 的回复:]
[quote=引用 5 楼 吉普赛的歌 的回复:]
第一个是只找出部门的名字,蓝色产品,和年龄不超过40是条件,不去要显示出来,怎么破

我 #5 的不可以吗?[/quote]
大神写的相当好,可不可以加一下大神的QQ具体描述一下问题,我描述的好像不太准确
吉普赛的歌 版主 2018-12-11
  • 打赏
  • 举报
回复
引用 7 楼 weixin_44051700 的回复:
[quote=引用 5 楼 吉普赛的歌 的回复:] 第一个是只找出部门的名字,蓝色产品,和年龄不超过40是条件,不去要显示出来,怎么破
我 #5 的不可以吗?
小小白SQL 2018-12-11
  • 打赏
  • 举报
回复
[quote=引用 5 楼 吉普赛的歌 的回复:]
第一个是只找出部门的名字,蓝色产品,和年龄不超过40是条件,不去要显示出来,怎么破
RINK_1 2018-12-11
  • 打赏
  • 举报
回复

SELECT E.*
FROM SELLS A 
JOIN PRODUCT B ON A.PID=B.PID
JOIN DEPARTMENT C ON A.DID=C.DID
JOIN WORKSLN D ON C.DID=D.DID
JOIN EMPLOYEE E ON D.EID=E.EID
WHERE PCOLOUR='BLUE'
AND AGE<=40

吉普赛的歌 版主 2018-12-11
  • 打赏
  • 举报
回复
修正一下:
--1 找出销售蓝色产品的部门的名称,这些部门没有超过40岁的员工。
select 
d.dname
,e.ename
,e.age 
from product as p inner join sells as s 
    on p.pid=s.pid and p.pcolour='蓝色'
    inner join department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
    on w.eid=e.eid and e.age<=40

--2 找到每个部门的ID和在该部门工作的最年长的人的年龄。
select * from (
select 
d.did
,d.dname
,e.employee
,e.age
,row_number() over(partition by d.did order by e.age desc) as rid
from 
department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
    on w.eid=e.eid
) as tt
where rid=1

--3 找到在“central”部门工作的至少一名员工年龄更大的员工的姓名。
select top 5 * 
from 
department as d
    on d.did=s.did and d.dname='central'
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
order by e.age desc

--4 找出在没有员工超过40岁的部门工作的员工的名字。
select d.dname
,e.ename
,e.age
from 
department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
where e.age<=40

--5 找出在销售至少五种产品的部门工作的员工的名字。
select e.ename 
from employee as e
inner join worksIn as w
where w.did in (
select 
d.did
from product as p inner join sells as s 
    on p.pid=s.pid
    inner join department as d
    on d.did=s.did
group by d.did
havfing count(pid)>=5
)
吉普赛的歌 版主 2018-12-11
  • 打赏
  • 举报
回复
--1 找出销售蓝色产品的部门的名称,这些部门没有超过40岁的员工。
select 
d.dname
,e.ename
,e.age 
from product as p inner join sells as s 
    on p.pid=s.pid
    inner join department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
    on w.eid=e.eid and e.age>40

--2 找到每个部门的ID和在该部门工作的最年长的人的年龄。
select * from (
select 
d.did
,d.dname
,e.employee
,e.age
,row_number() over(partition by d.did order by e.age desc) as rid
from 
department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
    on w.eid=e.eid
) as tt
where rid=1

--3 找到在“central”部门工作的至少一名员工年龄更大的员工的姓名。
select top 5 * 
from 
department as d
    on d.did=s.did and d.dname='central'
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
order by e.age desc

--4 找出在没有员工超过40岁的部门工作的员工的名字。
select d.dname
,e.ename
,e.age
from 
department as d
    on d.did=s.did
    inner join worksIn as w
    on w.did=d.did
    inner join employee as e
where e.age<=40

--5 找出在销售至少五种产品的部门工作的员工的名字。
select e.ename 
from employee as e
inner join worksIn as w
where w.did in (
select 
d.did
from product as p inner join sells as s 
    on p.pid=s.pid
    inner join department as d
    on d.did=s.did
group by d.did
havfing count(pid)>=5
)
小小白SQL 2018-12-11
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
楼主哪里不会?把你写的和不会的描述一下。
你看一下我下面写的
小小白SQL 2018-12-11
  • 打赏
  • 举报
回复
比如说第1个,不知道怎么写,

我只能写成这样,但是放在数据库里面不仅找不出来还有有错误!
二月十六 版主 2018-12-11
  • 打赏
  • 举报
回复
楼主哪里不会?把你写的和不会的描述一下。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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