关于sql 语句难点

 

一,order 与group by 的区别:
对总分排序后输出,然后再按从高到低的顺序输出
select name from student order by (math+english+chinese) desc;   (不会覆盖相同的项)

group by (像纸牌一样会覆盖相同的项)

select * from talbe where name='' and password='';

 

 

二,聚合函数  (聚合函数只能和聚合函数一起显示,如果与其他一起显示的话除非要加group by)
   ~1.Count -- 返回某一列,行的总数
    ~统计一个班级共有多少学生?

   1.(先把它看做是一个班有多少个学生)

   2.(再用聚合函数运算)
     select count(*) from exam;           严重的错误(因为没有加group by)select name,count(*) from exam;
    ~统计数学成绩大于90的学生有多少个?
     select count(*) from exam where math>60;
    ~统计总分大于230的人数有多少?
     select count(math+english+chinese) from exam where math+english+chinese>230;

三,分组查询  (group by)

 

GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。

 

 

四,!~having 和 where 的差别: where语句用在分组之前的筛选,having用在分组之后的筛选,having中可以用合计函数,where中就不行。使用where的地方可以用having替代。
       练习:查询商品列表中除了橘子以外的商品,每一类商品的总价格大于500元的商品的名字
        select product,sum(price) from orders where product<>'桔子'group by product having sum(price)>500;

 

五,搞明白多表连接 (重要的是分清左连接还是右连接)和group by 组合的使用

 

1.  先要清楚一个表中有哪些数据

     1.1找哪些表的数据

      1.2 找要有join 哪

      1.3 找连接哪些表

 2.找where 语句

3.看是否有聚合函数

4.看是否有group by .....的语句

5.找having 语句

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值