萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql下count()和sum()區別

Mysql下count()和sum()區別

在mysql中有兩個函數count()與sum()函數,有很多朋友搞不清楚,從英文的角度我們可以分析出來count是統計個數,sum是求各並且只能是數值型哦

要求:查詢出2門及2門以上不及格者的平均成績。
經常會用兩種查詢語句有兩種:

 代碼如下 復制代碼

1. select name,sum(score < 60) ,avg(score)  from result  group by name having sum(score<60) >=2;

再看

算你擁有動物的總數目與“在pet表中有多少行?”是同樣的問題,因為每個寵物有一個記錄。COUNT(*)函數計算行數,所以計算動物數目的查詢應為:

 代碼如下 復制代碼 mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+

在前面,你檢索了擁有寵物的人的名字。如果你想要知道每個主人有多少寵物,你可以使用COUNT( )函數:

 代碼如下 復制代碼 mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner  | COUNT(*) |
+--------+----------+
| Benny  |        2 |
| Diane  |        2 |
| Gwen   |        3 |
| Harold |        2 |
+--------+----------+

注 意,使用GROUP BY對每個owner的所有記錄分組,沒有它,你會得到錯誤消息:

 代碼如下 復制代碼 mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause

COUNT( )和GROUP BY以各種方式分類你的數據。下列例子顯示出進行動物普查操作的不同方式。

每種動物的數量:

 代碼如下 復制代碼 mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird    |        2 |
| cat     |        2 |
| dog     |        3 |
| hamster |        1 |
| snake   |        1 |
+---------+----------+

每種性別的動物數量:

 代碼如下 復制代碼 mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex  | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+

(在這個輸 出中,NULL表示“未知性別”。)

按種類和性別組合的動物數量:

 代碼如下 復制代碼 mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | NULL |        1 |
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

若 使用COUNT( ),你不必檢索整個表。例如, 前面的查詢,當只對狗和貓進行時,應為:

 代碼如下 復制代碼 mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE species = 'dog' OR species = 'cat'
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
+---------+------+----------+

或, 如果你僅需要知道已知性別的按性別的動物數目:

 代碼如下 復制代碼

mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE sex IS NOT NULL
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

mysql sum

 代碼如下 復制代碼

2.select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2;

copyright © 萬盛學電腦網 all rights reserved