转自:http://blog.csdn.net/facepp/archive/2008/02/29/2132792.aspx 数据库结构:数据表:student表结构:Field Name DataType Lenid int 20name varchar 25major varchar 25score int 20sex varchar 20表数据:编号/姓名/专业/学分/性别id name major score sex1 jak Chinese 40 f2 rain Math 89 m3 leo Phy 78 f4 jak Math 76 f5 rain Chinese 56 m6 leo Math 97 f7 jak Phy 45 f8 jak Draw 87 f9 leo Chinese 45 f 现在我们要得到一个视图:要求查询性别为男生,并且列出每个学生的总成绩:SQL:select s.*,sum(s.score) from student s where sex='f' group by s.name Result:id name major score sex sum(s.score)1 jak Chinese 40 f 2483 leo Phy 78 f 220 可以看到总共查到有两组,两组的学生分别是jak和leo,每一组都是同一个学生,这样我们就可以使用聚合函数了。只有使用了group by语句,才能使用如:count()、sum()之类的聚合函数。下面我们再对上面的结果做进一步的筛选,只显示总分数大于230的学生:SQL:select s.*,sum(s.score) from student s where sex='f' group by s.name having sum(s.score)>230 Result:id name major score sex sum(s.score)1 jak Chinese 40 f 248 可见having于where的功能差不多。结论:1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。2.GROUP BY 子句用来分组 WHERE 子句的输出。3.HAVING 子句用来从分组的结果中筛选行。
where group by having
最新推荐文章于 2024-10-16 18:24:49 发布