zoukankan      html  css  js  c++  java
  • 4.对数据表进行分组--Group By

    4.对表进行分组

    a.使用Group By应该注意以下几点

    • 1.只能写在Select语句中(如果有where子句需要写在where子句之后)
    • 2.Group By的结果是无序的
    • 3.where 子句中不能使用聚合函数
    • 4.Group By的筛选数据条件应该写在HAVING子句中

    b.Group by 常见的问题

    • 1.select中使用了对于的列值
    • 2.在where子句中使用聚合函数

    c.筛选分组--Having

    • eg:sc学生成绩表,有sno字段,cno课程表,grade分数
    • select cno,count(*) from sc group by cno having count(*)>2;
    • Having如何使用
        • 1.常数
          • 0返回空  非0表示正确      
        • 2.group by中指定的元素(建议写在where条件中)
          • select cno,count(*) from sc group by cno having cno="EE-1"  
        • 3.聚合函数  
          • select cno,count(*) from sc group by cno having count(*)>2

    d.where子句与Having子句的执行速度比较

    • 1.SQL执行顺序:From-->WHERE-->Group By-->Having-->Select
    • 2.Group by中会按照分组的列进行排序,排序的数据越少越好
    • 3.所以筛选数据放在where中比较合适
        • a.Having中只能使用group by对应的列
        • b.where子句可以删除一部分数据,还可以为对应的列添加索引 

     

  • 相关阅读:
    C#中的String与string
    类和结构的异同点?
    HTTP 无状态啊无状态啊
    重载运算符
    Lambda与委托
    Js与正则表达式
    字符函数PATINDEX()与STUFF()
    C#中的托管与非托管
    原码,反码,补码
    日期函数与转型
  • 原文地址:https://www.cnblogs.com/yangyunnb/p/6440208.html
Copyright © 2011-2022 走看看