1.肯定不行,你那样把一个学生不属于该教师的信息也查询出来了。。 2.第三道题答案如下,这里能不能把Group by C.class-name Having count(*)>=5);去掉,改成and count(*)>=5语法报错。。having是查询结果之后额筛选,但是你的修改是查询之前的刷选,但是你没有这样列,肯定报错。。 3.查询的是上课人数多余2人的课里的人数。。
having count(*)里面的*指的是前面select所找的列??? 按照这样第三题统计的是班级数>5,第四题统计学生数>2????
不是吧,我从百度文库里面看到如下 having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如: SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2
SELECT S.student-name FROM Student S, Class C, Enrolled E WHERE S.student-id=E.student-id and E.class-name=C.class-name Group by S.student-id, time Having count(*)>=2;感觉这个语句有问题同一个学生可以在同一时间上不同的课吗?
2.第三道题答案如下,这里能不能把Group by C.class-name Having count(*)>=5);去掉,改成and count(*)>=5语法报错。。having是查询结果之后额筛选,但是你的修改是查询之前的刷选,但是你没有这样列,肯定报错。。
3.查询的是上课人数多余2人的课里的人数。。
4. 去掉 having count(*) >=2 之后 ,代表的意义就是 ,查看 每个学生 每个时间 选了几门课
可能是这样的结果
A 14:00 1门课
A 9:00 3门课
B 14:00 2门课
加上之后 小于2门的那些学生就没有 了
按照这样第三题统计的是班级数>5,第四题统计学生数>2????
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如:
SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2
FROM Student S, Class C, Enrolled E
WHERE S.student-id=E.student-id and E.class-name=C.class-name
Group by S.student-id, time
Having count(*)>=2;感觉这个语句有问题同一个学生可以在同一时间上不同的课吗?
弱弱的问:第三题答案count(*)>=5是查找班级数大于等于5的吧
另外having count(*)你统计的是group by里的列????
谢谢
比如说Group by C.class-name就是统计 C.class-name在Enrolled 出现超过5次的记录。。