group by 用法解析
group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
某个员工信息表结构和数据如下:
id name dept salary edlevel hiredate
1 张三 开发部 2000 3 2009-10-11
2 李四 开发部 2500 3 2009-10-01
3 王五 设计部 2600 5 2010-10-02
4 王六...
-- MySQL 5.7 CLUSTER NDB 7.5 -- 创建undo logfile groupcreate logfile group lg_1 ADD UNDOFILE ‘undo_1.log‘ INITIAL_SIZE 1024M undo_buffer_size 8M ENGINE NDBCLUSTER; -- 增加 logfileALTER logfile group lg_1 ADD UNDOFILE ‘undo_2.log‘ initial_size 1024M ENGINE NDBCLUSTER; -- 创建tablespaceCREATE TABLESPACE ts1 ADD DATAFILE ‘data...
本文主要针对GROUP BY 和 HAVING两个关键字进行分析使用测试表如下:测试前,只知道GROUP BY 这个关键字的作用是根据一个字段进行分组,去重。HAVING对分组设置条件。具体分组规则,设置条件不清楚。 测试开始首先单独使用GROUP BY对 kecheng 字段进行分组:SELECT * from a GROUP BY kecheng执行sql,结果如下:分析: 根据 kecheng 字段分组,并去重了,去重规则为 kecheng 的第一条数据。 然后加上HAVING,对分组进行设置条...
MySQL教程之concat以及group_concat的用法 本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。3、举例:例1:select concat (id, name, score) as info from tt2;中间有一行为null是因为tt2表中有一行的score值为null。例2:在例1的结果中三个字段id,name,scor...
之前遇到一个这样的小需求:数据表里面每一行里面存放的是每个用户每个因子的得分数(一个用户共有23个因子),而我们需要得到的报表是按用户为维度排列出每个用户的因子得分记录,其中每行记录显示的是该用户23个因子的得分记录值。 该需求是要实现将一张表里面相同ID的多行转换成一个ID一行多列的形式展现,如下图所示(该例子中的表名假定为A): ID SCORE ...
GROUP_CONCAT 函数返回一个字符串结果,该结果由分组中的值连接组合而成,常和 GROUP BY 连用。如果需要自定义分隔符可以使用 SEPARATOR。示例:SELECT GROUP_CONCAT(id) ids FROM sys_oem_resources WHERE pid IS NOT NULL GROUP BY pid; SELECT GROUP_CONCAT(id SEPARATOR ‘*‘) ids FROM sys_oem_resources WHERE pid IS NOT NULL GROUP BY pid; 注意示例:别乱用 GROUP_CONCAT,说不定你现在使用的 GROUP_CONCAT 得到的结果就...
原文:http://www.cnblogs.com/mavischen916/p/7294354.html
背景 因业务需要汇总数据,汇总条件较复杂,所以想汇总时获取所有汇总数据的ID,以便后续使用。 功能 将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果。语法 group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符‘] ) 说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。...
类如 有一个帖子的回复表,posts( id , tid , subject , message , dateline ) ,id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), subject 为回复标题, message 为回复内容, dateline 为回复时间,用UNIX 时间戳表示,现在要求 选出 前十个来自不同主题的最新回复SELECT*FROM posts GROUPBY tid LIMIT 10这样一个sql语句选出来的并非你想要的 最新的回复,而是最早的回复,实际上是某篇主题的第一条回复记录!...
今天晚上电脑上的数据库突然抽风,怎么也连不上了,查了好久的资料说可能是跟我在本机搭建的java项目有关,跟着资料弄了半天,问题还是没有解决,只好另求出路。想起之前安装过一个linux虚拟机,就想借用虚拟机上的sql,没想到在写分组查询的时候一直报下面这个错:ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘user.t_user.name‘ which is not functionall...
结论:select xx from xx where xx group by xx order by xxx;select xx from xx group by xx having xx order by xxx;===============================where 跟having 后面都可以跟条件。但是又有很多区别1 where 的字段必须是表中的字段2 执行顺序是,先where 后 聚合3 having 后面的字段不必须是表的字段4 having 先聚合 后 条件5 有时where 跟having 可以替换原文:https://www.cnblogs.com/guoshuai-yangxu/p/11578805.html
SELECTauditor,sum(count) total,GROUP_CONCAT(type,‘=‘, count) AS type_count
FROMauditor_dm_ol
WHERE created =20190402GROUPBYauditor
UNIONSELECT a.auditor ,SUM(a.total),GROUP_CONCAT(a.type,‘=‘,a.total) from (
SELECT‘all‘ auditor ,type,sum(count) total FROMauditor_dm_ol
WHERE created =20190402GROUPBY type)a ORDERBY total desc 原文:https://www.cnblogs.com/hejunhong/p/10645828.html
一、原理层面 这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。 二、sql层面 在sql执行时,出现该原因: 简单来说就是:输出的结果是叫target list,就是select后面跟着的字...
一、CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串。使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+--------+| id | name |+----+--------+| 1 | BioCyc |+----+--------+1、语法及使用特点:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。可以有一个或多个参数。2、使用示例:SELECT CONCAT(i...
group by 用法解析group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。某个员工信息表结构和数据如下: id name dept salary edlevel hiredate 1 张三 开发部 2000 3 2009-10-11 2 李四 开发部 2500 3 2009-10-01 3 王五 设计部 2600 5 2010-10-02 4 王六 设计部 ...