MySQL-分组查询及分组函数
- 格式:docx
- 大小:26.59 KB
- 文档页数:3
mysql与oracle中分组、聚合函数的区别!
今天需要这样一句sql:先用group by进行分组,然后利用聚合函数count 或者sum进行计算,并显示其它的辅助信息。
where c.media_code = m.media_code
group by c.media_code,m.media_name
*/
--通过:
selectcount(c.channel_name),m.media_name
from channel c,media m
where c.media_code = m.media_code
groupby m.media_name
--正常
select count(c.channel_name),m.media_name
from channel c,media m
where c.media_code = m.media_code
group by c.media_code,m.media_name
--正常
select count(c.channel_code),m.media_name
from channel c,media m
where c.media_code = m.media_code
group by c.media_code,m.media_name
总结如下:
注:oracle常用分组函数:
COUNT、AVE、SUM、MAX、MIN
Count(*):返回表中所有的行包括空行和重复的行。
COUNT(表达式)返回表中所欲哦表达式为空的行。例如:select count(mgr) from emp; 返回表中所有mgr 为非空的行。
Max、min可用于:数字型数据、字符型数据和日期型数据。
!!!!除了Count(*)外,其他的分组函数都不处理空值(NULL)
比如Max求出的“最大值”就不是null,尽管select的结果(按照从小到大到达顺序)null排在最后的位置。
如果在一个查询中使用了分组函数,任何不在分组函数的列或表达式必须在GROUP BY子句中。
网友总结:
select ……group by的时候,前面的select的字段,要么是group by的依据,要么是聚合内容。
我理解下:
Select中的字段,只能包含在聚合函数中(e.g:min(price)),或是包含在group by子句中,