• ADADADADAD

    sql语句中group by怎么用[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:25:30

    作者:文/会员上传

    简介:

    1.概述group by 就是依据by 后面的规则对数据分组,所谓的分组就是讲数据集划分成若干个'小组',针对若干个小组做处理。2.语法规则SELECTcolumn_name,aggregate_functi

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    1.概述

    group by 就是依据by 后面的规则对数据分组,所谓的分组就是讲数据集划分成若干个'小组',针对若干个小组做处理。

    2.语法规则

    SELECTcolumn_name,aggregate_function(column_name)FROMtable_nameWHEREcolumn_nameoperatorvalueGROUPBYcolumn_name

    3.举例说明

    我们有这样一个订单表:

    我们希望统计每一个用户订单的总金额,我们可以借助 group by 来实现:

    selectCustomer,sum(OrderPrice)astotal_pricegroupbyCustomer;

    出现下面的结果集:
    Bush 2000
    Carter 1700
    Adams 2000
    实际上是先讲数据按照Customer分组,然后统计每一组orderPrice的总和,最后以一组作为一行展现出来。
    如果去掉group by 语句就会出现下面的结果:

    它是讲所有的price相加得到最后的总和,与我们的预期是不一样的。

    4.注意点

    如果出现下面的写法:

    select类别,sum(数量)as数量之和,摘要fromAgroupby类别orderby类别desc

    会报错,因为select 的字段要么包含在group by 后面作为分组的依据,要么包含在聚合函数中,否则摘要的那一列无法匹配到一行。
    因此可以采用如下的写法:

    select类别,sum(数量)AS数量之和fromAgroupby类别orderbysum(数量)desc

    如果想使用多列分组,可以采用group by all语法:

    selectCustomer,OrderDate,sum(OrderPrice)groupbyallCustomer,OrderDate

    5.where 和having的区别

    where 是在查询分组前,讲不符合where 条件的行去掉,即在分组钱过滤数据,where 条件中不能包含聚合函数
    having 是筛选满足条件的组,即在分组之后过滤数据,having语句中常常包含聚合函数,用having过滤出特定的组。
    举例:

    selectCustomer,sum(OrderPrice)astotal_pricegroupbyCustomerhavingtotal_price>1700;
    sql语句中group by怎么用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: groupbysql