where group by having

转自: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 子句用来从分组的结果中筛选行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值