mysql中的統計函數: 1. 查詢商品價格中最高的價格: 2. 查詢商品價格中最低的價格: 3. 求庫存總量: 4. 查看所有商品的平均價格: 5. 統計商城內共有多少種商品(不是多少個): count()函數是統計行數值,之所以用count(*)而不用count(列名)是因為如果該列有一行為空, ...
mysql中的統計函數:
1. 查詢商品價格中最高的價格:
select max(shop_price) from goods;
2. 查詢商品價格中最低的價格:
select min(shop_price) from goods;
3. 求庫存總量:
select sum(goods_number) from goods;
4. 查看所有商品的平均價格:
select avg(shop_price) from goods;
5. 統計商城內共有多少種商品(不是多少個):
select count(*) from goods;
count()函數是統計行數值,之所以用count(*)而不用count(列名)是因為如果該列有一行為空,那麼count(列名)不會把它計算在內。
看個小例子:
就算有某一行全是空,用count(*)也能把它計算在內:
統計函數單獨使用意義不大,要和分組配合起來才有用:
mysql 之 group by 分組查詢:
計算一下第三個欄目下所有商品的庫存量之和:
select cat_id,sum(goods_number) from goods where cat_id=3 group by cat_id;
一次計算完每一個欄目下的庫存量之和:
select cat_id,sum(goods_number) from goods group by cat_id;
嚴格的講,以group by a,b,c為列,select的列只能在a,b,c或者是統計函數中選擇,這樣在語義上才沒有矛盾。
做個小練習:有以下成績表,求出掛科數等於或高於2門的學生的平均成績:
select name,avg(score),sum(score<60)as fail from test5 group by name having fail >=2;
排序:order by
取出第四個欄目下的商品,把價格由高到低進行排序:
select *from goods where cat_id=4 order by shop_price desc; #desc 代表降序排列
按欄目升序排列,同一個欄目下的商品按價格降序排列:
select * from goods order by cat_id asc,shop_price desc;
限制輸出條目limit:
取出商品價格前十的商品:
select goods_id,goods_name,cat_id,shop_price from goods order by shop_price desc limit 10;
最後強調一點:Where,group by,having,order by,limit 五個子句順序不能亂!