• ADADADADAD

    mysql中group by用法[ 建站问答 ]

    建站问答 时间:2024-12-01 18:59:31

    作者:文/会员上传

    简介:

    mysql中group by用法:在SELECT查询语句的WHERE条件子句后面添加group by关键字,group by主要是用来结合聚合函数,根据一个或多个列对结果集进行分组。GROUP BY 语法SELECTcolum

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

    mysql中group by用法:在SELECT查询语句的WHERE条件子句后面添加group by关键字,group by主要是用来结合聚合函数,根据一个或多个列对结果集进行分组。

    GROUP BY 语法

    SELECTcolumn_name,function(column_name)

    FROMtable_name

    WHEREcolumn_nameoperatorvalue

    GROUPBYcolumn_name;

    实例演示

    使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中。

    SETNAMESutf8;

    SETFOREIGN_KEY_CHECKS=0;

    ------------------------------

    --Tablestructurefor`employee_tbl`

    ------------------------------

    DROPTABLEIFEXISTS`employee_tbl`;

    CREATETABLE`employee_tbl`(

    `id`int(11)NOTNULL,

    `name`char(10)NOTNULLDEFAULT'',

    `date`datetimeNOTNULL,

    `singin`tinyint(4)NOTNULLDEFAULT'0'COMMENT'登录次数',

    PRIMARYKEY(`id`)

    )ENGINE=InnoDBDEFAULTCHARSET=utf8;

    ------------------------------

    --Recordsof`employee_tbl`

    ------------------------------

    BEGIN;

    INSERTINTO`employee_tbl`VALUES('1','小明','2016-04-2215:25:33','1'),('2','小王','2016-04-2015:25:47','3'),('3','小丽','2016-04-1915:26:02','2'),('4','小王','2016-04-0715:26:14','4'),('5','小明','2016-04-1115:26:40','4'),('6','小明','2016-04-0415:26:54','2');

    COMMIT;

    SETFOREIGN_KEY_CHECKS=1;

    导入成功后,执行以下 SQL 语句:

    mysql>setnamesutf8;

    mysql>SELECT*FROMemployee_tbl;

    +----+--------+---------------------+--------+

    |id|name|date|singin|

    +----+--------+---------------------+--------+

    |1|小明|2016-04-2215:25:33|1|

    |2|小王|2016-04-2015:25:47|3|

    |3|小丽|2016-04-1915:26:02|2|

    |4|小王|2016-04-0715:26:14|4|

    |5|小明|2016-04-1115:26:40|4|

    |6|小明|2016-04-0415:26:54|2|

    +----+--------+---------------------+--------+

    6rowsinset(0.00sec)

    接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:

    mysql>SELECTname,COUNT(*)FROMemployee_tblGROUPBYname;

    +--------+----------+

    |name|COUNT(*)|

    +--------+----------+

    |小丽|1|

    |小明|3|

    |小王|2|

    +--------+----------+

    3rowsinset(0.01sec)

    使用 WITH ROLLUP

    WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

    例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

    mysql>SELECTname,SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;

    +--------+--------------+

    |name|singin_count|

    +--------+--------------+

    |小丽|2|

    |小明|7|

    |小王|7|

    |NULL|16|

    +--------+--------------+

    4rowsinset(0.00sec)

    其中记录 NULL 表示所有人的登录次数。

    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

    selectcoalesce(a,b,c);

    参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

    以下实例中如果名字为空我们使用总数代替:

    mysql>SELECTcoalesce(name,'总数'),SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;

    +--------------------------+--------------+

    |coalesce(name,'总数')|singin_count|

    +--------------------------+--------------+

    |小丽|2|

    |小明|7|

    |小王|7|

    |总数|16|

    +--------------------------+--------------+

    4rowsinset(0.01sec)

    mysql中group by用法.docx

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

    推荐度:

    下载
    热门标签: mysqlgroupby