1.1)problem:存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换,计算或格式化过的数据;1.2)solution:这就是计算字段发挥作用所在了, 计算字段是运行时在 select语句内创建的;
3.1)拼接:将值联结到一起构成单个值(使用 concat() 函数来拼接两个列);
3.2)删除数据右侧多余空格来整理数据: 这可以通过RTrim()函数来实现,(不区分大小写,即rtrim()函数),当然也有ltrim() 函数 和 trim() 函数;
problem)如上图所示,对于datetime 类型的 deal_time ,where deal_time=‘2016-05-10‘ 检索失败;solution)指示MySQL 仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期和整个列值进行比较。为此,必须使用Date()函数;
1.1)聚集函数定义:运行在行组上, 计算和返回单个值的函数;
1.2)avg()函数
1.3)count() 函数 的两种用法func1)使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值;func2)使用count(column)对特定列中具有值的进行计数,忽略NULL 值;
1.4)max() 函数 和 min() 函数 + sum()函数
2.1)对所有的行执行计算,指定all 参数或不给参数(因为all 是默认行为);2.2)只包含不同的值,指定distinct 参数;
r1)group by 子句可以包含任意数目的列,这使得对分组可以嵌套,为数据分组提供更细致的控制(也即 group by column1, column2==先按照column1进行分组,再按照column2进行分组);r2)如果在group by 子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算;r3)group by子句中列出的每个列都必须是检索列或有效的表达式。如果在select中使用表达式,则必须在group by子句中指定相同的表达式,不能使用别名;r4)初开聚集计算语句外,select语句中的每个列都必须在 group by 子句中给出;(干货规定)r5)如果分组列中具有null 值, 则null 值将作为一个分组返回。 如果列中有多行NULL 值,它们将分为一组;r6)group by 子句必须出现在 where 子句之后,order by 子句之前;(干货——group by 子句在 where子句和order by 子句的位置)
4.1)过滤分组使用 having子句进行处理;4.2)where子句和having子句的区别(Difference):
D1)where过滤行,而having 过滤列;D2)where 在数据分组前进行过滤,而having在数据分组后进行过滤;(干货——这是where 和having一个重要的区别)
5.1)group by 和 order by的不同
5.2)不要忘记group by:一般在使用 group by 子句时,应该也给出order by子句。这是保证数据正确排序的唯一方法;
MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据
原文:http://blog.csdn.net/pacosonswjtu/article/details/51425714