MySQL-分组查询及分组函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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子句中,