Mysql中的count()與sum()區(qū)別詳細介紹
更新時間:2012年11月12日 09:26:37 作者:
本文將介紹Mysql中的count()與sum()區(qū)別,需要的朋友可以參考下
首先創(chuàng)建個表說明問題
CREATE TABLE `result` (
`name` varchar(20) default NULL,
`subject` varchar(20) default NULL,
`score` tinyint(4) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
插入一些數(shù)據(jù),
insert into result values
('張三','數(shù)學',90),
('張三','語文',50),
('張三','地理',40),
('李四','語文',55),
('李四','政治',45),
('王五','政治',30),
('趙六','語文',100),
('趙六','數(shù)學',99),
('趙六','品德',98);
要求:查詢出2門及2門以上不及格者的平均成績。
經(jīng)常會用兩種查詢語句有兩種:
select name,sum(score < 60) ,avg(score) from result group by name having sum(score<60) >=2;
select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2;
兩種查詢的結(jié)果肯定是不一樣的,肯定是第一種正確的,原因是為什么,這時你就要想了,count()函數(shù)的意義和sum函數(shù)的意義
count()函數(shù)里面的參數(shù)是列名的的時候,那么會計算有值項的次數(shù)。
Sum()函數(shù)里面的參數(shù)是列名的時候,是計算列名的值的相加,而不是有值項的總數(shù)。
對count()行數(shù)還要注意:它會計算總行數(shù)。不管你是否有值都會列入計算范圍。另外一點:mysqlisam引擎很容易獲得總行數(shù)的統(tǒng)計。查詢速度變得更快
歸納:實際編程中統(tǒng)計總行數(shù)是經(jīng)常用到的。此時使用count(*)多處可見。我很少看到有人使用列名作為參數(shù):count(a)的情況。即使是這樣使用,可能其初衷也是想統(tǒng)計行數(shù)。只是不知道!這樣所造成的細微差異而錯誤使用了"列名"的形式。
復(fù)制代碼 代碼如下:
CREATE TABLE `result` (
`name` varchar(20) default NULL,
`subject` varchar(20) default NULL,
`score` tinyint(4) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
插入一些數(shù)據(jù),
復(fù)制代碼 代碼如下:
insert into result values
('張三','數(shù)學',90),
('張三','語文',50),
('張三','地理',40),
('李四','語文',55),
('李四','政治',45),
('王五','政治',30),
('趙六','語文',100),
('趙六','數(shù)學',99),
('趙六','品德',98);
要求:查詢出2門及2門以上不及格者的平均成績。
經(jīng)常會用兩種查詢語句有兩種:
復(fù)制代碼 代碼如下:
select name,sum(score < 60) ,avg(score) from result group by name having sum(score<60) >=2;
復(fù)制代碼 代碼如下:
select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2;
兩種查詢的結(jié)果肯定是不一樣的,肯定是第一種正確的,原因是為什么,這時你就要想了,count()函數(shù)的意義和sum函數(shù)的意義
count()函數(shù)里面的參數(shù)是列名的的時候,那么會計算有值項的次數(shù)。
Sum()函數(shù)里面的參數(shù)是列名的時候,是計算列名的值的相加,而不是有值項的總數(shù)。
對count()行數(shù)還要注意:它會計算總行數(shù)。不管你是否有值都會列入計算范圍。另外一點:mysqlisam引擎很容易獲得總行數(shù)的統(tǒng)計。查詢速度變得更快
歸納:實際編程中統(tǒng)計總行數(shù)是經(jīng)常用到的。此時使用count(*)多處可見。我很少看到有人使用列名作為參數(shù):count(a)的情況。即使是這樣使用,可能其初衷也是想統(tǒng)計行數(shù)。只是不知道!這樣所造成的細微差異而錯誤使用了"列名"的形式。
相關(guān)文章
mysql索引過長Specialed key was too long的解決方法
在創(chuàng)建要給表的時候遇到一個有意思的問題,提示Specified key was too long; max key length is 767 bytes,本文就來介紹一下解決方法,如果你也遇到此類問題,可以參考一下2021-11-11MySQL定時備份數(shù)據(jù)庫(全庫備份)的實現(xiàn)
本文主要介紹了MySQL定時備份數(shù)據(jù)庫(全庫備份)的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Mysql在Windows系統(tǒng)快速安裝部署方法(綠色免安裝版)
這篇文章主要介紹了Mysql在Windows系統(tǒng)快速安裝部署方法(綠色免安裝版),需要的朋友可以參考下2017-06-06Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負數(shù)時sql 語句報錯的問題
這篇文章主要介紹了Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負數(shù)時sql 語句報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05Mysql時間軸數(shù)據(jù) 獲取同一天數(shù)據(jù)的前三條
這篇文章主要介紹了Mysql時間軸數(shù)據(jù) 獲取同一天數(shù)據(jù)的前三條 ,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07