mysql统计函数
count() 计算行数
avg() 求平均函数
sum() 求总和
min() 求最小
max() 求最大
1. 查询所有商品的平均价格
- select avg(shop_price) from goods;
2. 查询最贵的商品
- select max(shop_price) from goods;
3. 查询最便宜的商品
- select min(shop_price) from goods;
4. 查询一共有多少种商品
- select count(*) from goods;
5. 查询商品的总价格
- select sum(shop_price) from goods;
6. 查询本店积压的商品总货款
- select sum(shop_price*goods_number) from goods;
经常统计的时候是分组统计 group by
1. 帮我统计每个栏目下商品的平均价格
- select cat_id,avg(shop_price) from goods group by cat_id;
分组查询 , 一半是比较耗费资源的 , 因为数据会先按照分组进行排序 , 再筛选出你所需的内容出来 ; 如果索引建立的比较巧妙 , 在分组的时候有可能根据索引不需要排序 ;所以分组计算能避免则避免 , 它比较浪费资源 ;
2. 查询每个栏目下有多少种商品
- select cat_id,count(*) from goods group by cat_id;
3. 查询每个栏目下最贵的商品价格
- select cat_id,max(shop_price) from goods group by cat_id;
4. 查询每个栏目下商品的库存量
- select cat_id,sum(goods_number) from goods group by cat_id;
例如:还有其它的,像最贵商品价格、最低商品价格、商品平均价格、商品库存量、商品种类查询这些原理都是相通的;只需要用相关的函数即可!
注意事项:
- select goods_id,cat_id,sum(goods_number) from goods group by cat_id;
以上这个语义的有问题的 , 不合法的,虽然说也能取出数据,但是是不正确的数据;
解释:我们按照分组筛选取出 cat_id, 如果我们想取 goods_id, 那么会显示什么呢 ? 按照栏目分组 , 那我们取出的每个栏目下的 cat_id 肯定是一样的 , 但是每个栏目下的商品的 goods_id 是不同的 , 如果我想取出 goods_id, 那会是哪个商品的 goods_id 呢 ?