作者kisha024 (4545454554)
看板Examination
标题Re: [课业] 资料库 SQL 语法
时间Fri Apr 20 09:51:56 2018
※ 引述《think12381 ()》之铭言:
: 请问一下各位 在写SQL语法考题和解答写得不一样 要怎麽断定是否写对?
: 应该很难跟解答 完全一致吧 或着说
: "如果自己错 错在哪边?"
: 举例来说
: 工程师(编号, 姓名, 年龄, 性别 , 薪水) PK 编号
: 产品(代号 , 名目 , 年销售量 , 售价) PK 代号
: 设计(编号,代号) PK 编号 代号
: 针对销售量 20万只的产品 餐与设计此产品的工程师 不超过五人 列出此产品
: 名目和工程师平均薪水
: 我这边写法是
: select 产品.产品名目 , avg(工程师.薪水)
: from 产品
: where 产品.代号 in //重产品代号去找
: (
: select 设计.代号 //找到 设计当中有一个连接
: from 设计 , 工程师 //要串工程师的资讯
: where 设计.编号 = 工程师.编号 and // 把编号和工程是串起来
: 产品.代号 = 设计.代号 and // 把产品和设计 串起来
: group by 产品.产品名目 //框起来 产品名目 对其开头 select
: having 产品.年销售量 < 200000 and
: sum(工程师.编号) <=5
: ) ;
: 不知道这样写对不对?
我认为不对
对非训练有素的考生或有点实务经验的人来说 我觉得这有点难
你可能要装个SQL SERVER 或 MYSQL 之类的软体来练习 才会比较有感觉
下面是其中一种写法 给你参考
select A.名目,AVG(C.薪水)'平均薪水' from 产品 A
inner join 设计 B on A.代号=B.代号
inner join 工程师 C on B.编号=C.编号
where A.年销售量 >= 200000
and A.代号 in
(select 代号 from 设计
group by 代号
having count(*) <=5)
group by A.代号,A.名目
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.144.196
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Examination/M.1524189119.A.082.html
1F:推 p19101910: 的确有不只一种作法,顺便问一下:inner join 04/21 10:40
2F:推 p19101910: 借问:楼主的inner join ,若改成 用 where 的 equi-j 04/21 10:43
3F:→ p19101910: oin, 04/21 10:43
4F:→ p19101910: 是否比较简洁 易写易懂? 04/21 10:43
当然可以这样写 但是否易写易懂 就见仁见智
※ 编辑: kisha024 (60.251.144.196), 04/21/2018 15:56:14