zoukankan      html  css  js  c++  java
  • [数据库]SQL中Group By 的常见使用方法.

    前言
    今天逛java吧看到了一个面试题, 于是有了今天这个文章, 回顾下Group By的用法.
    题目如下:
    Select name from table group by name having count(*) = 10;

    解释: 根据(by)一定的规则进行分组(Group) 所以就是根据题中的name进行分组, 然后把name相同的数量为10的记录都查找出来. 
    示例:
    表结构:

    执行结果:


    如果再添加一条记录: wangmeng. 那么 就查询不到了. 只有 相同username count 为10的才会被查询出来.


    1、概述
    Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

    2,原始表


    3,实例说明
    示例1

    SQL语句如下:

    select category, sum(count) as 数量之和
    from groupbyDemo
    group by category

    结果如下:

    看到结果大家都应该知道是怎样回事吧? 实际上就是分类汇总.
    示例2
    SQL语句如下:

    SELECT category, SUM(COUNT) AS 数量之和, summary
    FROM groupByDemo
    GROUP BY category
    ORDER BY category desc

    结果如下:

    说明, 这里加的 查询summary 会显示数据的第一条记录. 

    4,Group By与聚合函数
    常用的聚合函数: count, sum, avg, max, min
    示例1
    SQL语句如下:

    SELECT category, AVG(COUNT) AS 平均值 FROM groupByDemo GROUP BY category;

    结果如下: 

    5, Having与Where的区别
    (1)where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
    (2)having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

    示例1
    SQL代码:

    SELECT category, SUM(COUNT) AS 数量之和 FROM groupByDemo
    GROUP BY category
    HAVING SUM(COUNT) > 18

    结果如下:


    示例2
    SQL语句:

    SELECT category, SUM(COUNT)FROM groupByDemo
    WHERE COUNT > 10
    GROUP BY category
    HAVING SUM(COUNT) > 8

    结果如下:


    大概就是这么多了, 如果再有其他的情况会再次更新的. 

  • 相关阅读:
    51Nod 1052/1053/1115 最大M子段和V1/V2/V3
    51Nod1207 内存管理
    51Nod1207 内存管理
    51Nod1444 破坏道路
    51Nod1444 破坏道路
    51Nod1349 最大值
    51Nod1349 最大值
    51nod1485 字母排序
    aspx页面中的html标签中的值传到aspx.cs文件中的方法
    C#属性的使用
  • 原文地址:https://www.cnblogs.com/wang-meng/p/5373057.html
Copyright © 2011-2022 走看看