mysql高级查询
一、统计函数
group by 重要在统计上,mysql对分组的数据提供了很多的统计函数
count 计数
①、count(字段名)
比如说,使用goods表,对华为这个品牌进行计数。
使用别名可以省略 as,直接写入代替的名。
227.png

228.png
但是,count(字段名)会受到null值的影响,如下新插入一条数据。
229.png

230.png

231.png

232.png

233.png

234.png
②、count(*)
count(*)会把所有个数显示出来,回忽视null值的影响
235.png

236.png
③、max
用于统计group by分组后,一组数据中的最大值
例:查找按照品牌分组后,每组品牌中价格最大的值
237.png

238.png
④、min
用于统计group by分组后,一组数据中的最小值
239.png

240.png
⑤、sum
用于统计group by分组后,一组数据中的和
241.png

242.png
⑥、avg
用于统计group by分组后,一组数据的平均值
243.png

244.png
给查询起个别名:
245.png

246.png

二、多字段分组回溯统计
group by 字段1、字段2...
当group by指定多个字段时,会进行多字段分组
①、如图:简单的多字段分组:
247.png

248.png

②、进行简单品牌和内核分组的同时,统计每种品牌的个数
249.png

250.png
③、多字段回溯统计(with rollup)
进行内核品牌分组,统计每种内核下每种品牌个数,并且统计每种内核总个数(多字段回溯统计)
251.png

252.png
三、having子句
作用:
where是将硬盘中的数据读取到内存时,进行第1次筛选
group by是针对where子句匹配到的记录进行分组统
having 是针对group by分组统计得到的结果再进行第2次筛选
例:查找每一种品牌中,库存数量大于100的品牌
错误方法1:
253.png

254.png
错误方法2:
255.png

256.png
正确:
257.png

258.png

扩展:
统计函数(count、sum、max、min、avg),是不能出现在where子句中。
having可以替代where子句,但是强烈不建议这么用。

259.png