上一篇MySQL主要讲的是SELECT操作中的算术运算(+ - * /),比较运算(> = < >= <= <>)和逻辑运算(NOT AND OR),本篇主要讲聚合和排序,主要是对查询结果进行一定的处理,求和,求平均,倒序排布等。
1.聚合查询
聚合查询主要用用到的是COUNT/SUM/AVG/MAX/MIN函数把多行数据处理成一行的查询操作。
1.1 COUNT-统计数据行数
还是关于NULL值得注意要点,虽然说要求了数据不能有空值,但是在实际的应用中可能还是会出现的,在这里COUNT(*)能统计包含NULL的行数,而具体到某一列的时候,如果end_time有NULL值的情况出现,COUNT(end_time)的结果会统计排除NULL值以外的行数。
select COUNT(*) from history;
1.2 SUM-统计数据合值
除了COUNY能够用*统计行数,其他包括SUM在内的聚合函数都只针对一行数据进行处理,不能用*。以下AS语句需要强调的是,出现中文字符的时候,用双引号标记。假设在这个时候softA_coretime的数据出现了NULL值,按照之前的算术运算的规则,NULL值参与计算,结果一定是NULL值,但是在这里一定要记住,聚合函数以列名为参数的时候,会首先把NULL值排除在外的。
select sum(softA_coretime) as "SUM(小时)" from history;
1.3 AVG-计算数据平均值
select avg(softA_coretime) as "avg(小时)" from history;
1.4 MAX-筛选最大值
select max(softA_coretime) as "max(小时)" from history;
1.5 MIN-筛选最小值
select min(softA_coretime) as "min(小时)" from history;
1.6 总结
SUM/AVG是只作用于三大数据类型中的数值类型,而MAX/MIN函数可以针对任何类型的数据进行筛选,聚合函数中也可以用DISTINCT函数进行先除重再聚合的处理。