zoukankan      html  css  js  c++  java
  • 27-1 分组-having

    group by

    select * from TblStudent
    --1.请从学生表中查询出每个班的班级id和班级人数
    select
        tsclassId as 班级id,
        班级人数=count(*)
    from TblStudent
    group by tsclassId
    --请统计出,所有学生中男同学和女同学的人数分别是多少
    select
        tsGender as 性别,
        人数=count(*)
    from TblStudent
    group by tsGender 
    
    
    --2.请从学生表中查询出每个班的班级id和班级中男同学的人数
    select
        tsclassId as 班级id,
        男同学人数=count(*)
    from TblStudent
    where tsGender=''
    group by tsclassId
    --------------------------------------------------
    --当使用了分组函数group by或者是聚合函数的时候,在select的查询列表中不能再包括其他的列名,除非该列同时也出现在了group by子句中,或者该列也包含在了某个聚合函数中
    select
       sum(tsage),
       性别=tsGender,
       人数=count(*)
    from TblStudent
    group by tsGender

    having

    ----对分组以后的数据进行筛选:使用having
    --having和where都是对数据进行筛选,where是对分组前的每一行数据进行筛选,而having是对分组后的每一组数据进行筛选
    select
        tsclassId as 班级id,
        班级人数=count(*)
    from TblStudent
    group by tsclassId
    having count(*)>10

    SELECT 语句的处理顺序

    以下步骤显示SELECT语句的处理顺序。

    1、FROM

    2、ON

    3、JOIN

    4、WHERE

    5、GROUP BY

    6、with cube 或with rollup

    7、HAVING

    8、SELECT    8-1>选择列     8-2>distinct    8-3>top(应用top选项最后计算)

    10、ORDER By

    11、TOP

    ----------------------练习--------------------------
    select * from MyOrders
    --1.热销售商品排名表【即按照每种商品的总销售数量排序】
    select 
        商品名称,
        销售数量=sum(销售数量)
    from MyOrders
    group by 商品名称
    order by 销售数量 desc
    
    
    --2.请统计销售总价超过3000元的商品名称和销售总价,并按销售总价降序排序。
    select
        商品名称,
        销售总价=sum(销售数量)*销售价格 
    from MyOrders
    group by 商品名称
    having sum(销售数量)*销售价格>3000
    order by 销售总价 desc 
    
    
    --3.统计各个客户对“可口可乐”的喜爱度(既统计每个购买人对“可口可乐”的购买量)
    select 
        购买人,
        可口可乐购买量=sum(销售数量)
    from MyOrders
    where 商品名称='可口可乐'
    group by 购买人
    order by 可口可乐购买量 desc

    注意:可以按照多列来排序,也可以按照多列来分组(即先按照一列来分组,再按照一组再进行分组)

  • 相关阅读:
    oracle sql日期比较:
    vs 2008 过期问题
    silverlight带有复选框的列
    SQL 把一张表虚拟成两张表
    timeupdown
    ChildWindow 父窗体交互
    Debian CentOS修改时区
    如何优雅地使用命令行设置windows文件关联
    sql复制表结构,复制表内容语句
    VC6.0 中 添加/取消 块注释的Macro代码
  • 原文地址:https://www.cnblogs.com/Strugglinggirl/p/7203794.html
Copyright © 2011-2022 走看看