作者k222 (小乌龟)
看板Examination
标题[考题] 三等一般警察人员考试 资料库一题
时间Sun Jun 30 23:54:50 2013
二、假设某学校资料库如下:
Course (
CID, NAME, DEPT) // 课程(
课程代号,课程名称,系名)
Classroom (
RID, LOCATION, TYPE) // 教室(
教室编号,教室地点,类别)
Use(
CID , RID, TIME) // 使用(
课程代号,教室编号,使用时间)
蓝色为主键
(四)指出并改正下列SQL 语法错误以找出每间小型教室的使用次数。(10 分)
SELECT R.RID, COUNT (*) AS usecount
FROM Classroom R, Use S
WHERE R.RID=S.RID
GROUP BY R.RID
HAVING R.TYPE='small'
我认为的答案是改COUNT(TIME)
因为同一时间可能有两个课程使用同一间教室?
COUNT (*)可能会多算,
我不是很熟资料库,
请问我的想法是否正确?
请各位大大解惑 感谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.219.104
1F:→ malowda:用常识也知道不可能同时间有两个课程用同一间教室 07/01 00:18
2F:→ malowda:这和资料库熟不熟没关系好吗这是常识 07/01 00:19
3F:推 ARCHERDEVIL:不是很确定 我有点忘记count 会抓哪个table的资料 07/01 00:21
4F:→ ARCHERDEVIL:但印象中如果用count(*)应该会抓全部 07/01 00:22
5F:→ ARCHERDEVIL:至於这里的全部究竟是卡式积还是classroom 的我要想 07/01 00:22
6F:→ ARCHERDEVIL:正确写法应该是count(s.time) 07/01 00:23
7F:→ ARCHERDEVIL:select 那边也应该是s.cid 而不是r.cid 虽然也可以 07/01 00:24
8F:→ malowda:如果有某间SMALL的教室没开放使用就不会被算到 07/01 00:25
9F:→ malowda:没办法找出每间教室使用次数包含0的小型教室 07/01 00:26
10F:推 carterdunk:HAVING R.TYPE='small' 错了 07/01 00:26
11F:推 GLTY:楼上一语道破@@ 没开放就不会有纪录也不会被列出,这样? 07/01 00:27
12F:→ carterdunk:R.TYPE非聚合函数,应写在GROUP BY之外 07/01 00:27
13F:→ GLTY:被插队了XD" 07/01 00:28
14F:推 ARCHERDEVIL:欧真的XD 07/01 00:29
15F:→ ARCHERDEVIL:carterdunk是对的XD 07/01 00:30
16F:→ k222:谢谢各位指教:)) 07/01 08:25
17F:→ VampireClub:改成where r.rid=s.rid and r.type='small'? 07/01 08:58
18F:→ k222:似乎是...请问HAVING只能放聚合函数吗? 07/01 09:34
19F:推 nightdealer:咦?鼎文的讲义范例中,HAVING 也有使用非聚合函数说 07/04 13:28