MySQL中sum和count用法总结

本文深入探讨了MySQL中sum和count函数的多种用法,包括条件求和、记录计数、分组统计等,提供了丰富的示例帮助理解并正确应用这两个函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.sum

(1)sum()函数里面的参数是列名的时候,是计算列名的值的相加,而不是有值项的总数。

(2)sum(条件表达式),如果记录满足条件表达式就加1,统计满足条件的行数

2.count

(1)COUNT()函数里面的参数是列名的的时候,那么会计算有值项的次数。(NULL 不计入, 但是’'值计入)

(2)COUNT(*)可以计算出行数,包括null

(3)COUNT(1)也可以计算出行数,1在这里代表一行

(4)COUNT(column_name)对特定的列的值具有的行数进行计算,不包含NULL值

(5)COUNT(条件表达式),不管记录是否满足条件表达式,只要非NULL就加1

例子:要求:查询出2门及2门以上不及格者的平均成绩。

在这里插入图片描述

经常会用两种查询语句有两种:第1个正确,第2个错误

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

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

3、MySQL 分组之后如何统计记录条数 gourp by 之后的 count()

SELECT count(*) FROM 表名 WHERE 条件 // 这样查出来的是总记录条

SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数.

例子

select count() from(SELECT count() FROM 表名 WHERE 条件 GROUP BY id ) a ;

SELECT count() FROM (SELECT COUNT() FROM papa_stadium_goods_storage_record WHERE c_time>=1474560000 and c_time<1476201600 group by record_type) a

注意:子查询方式,MySQL中子结果集必须使用别名,而Oracle中不需要特意加别名!

4、sum mysql select 横向展示

在这里插入图片描述

例子1

DROP TABLE IF EXISTS `tongji`;
 create table tongji(
 tyear varchar(255),
 tmonth int,
 amount double
 )Engine=Innodb default charset=utf8;
 insert into tongji values('2011',1,1.1),('2011',2,1.2),('2011',3,1.3),('2011',4,1.4),('2012',1,2.1),('2012',2,2.2)
 ,('2012',3,2.3),('2012',4,2.4);

纵向展示

select * from tongji;
在这里插入图片描述

横向展示

SELECT t.tyear , 
	sum(if(t.tmonth=1,t.amount,null )) as 'm1' ,
	sum(if(t.tmonth=2,t.amount,null )) as 'm2' ,
	sum(if(t.tmonth=3,t.amount,null )) as 'm3' ,
	sum(if(t.tmonth=4,t.amount,null )) as 'm4' 
FROM tongji t GROUP BY (t.tyear);

null 就是if 判断结果为else的时候返回 null。 语法格式是这样的: if(条件, 为true, 为false)
在这里插入图片描述
核心知识点:如果这里去掉sum()函数,查询的记录,会是下面这种结果,这是因为group语句分组的时候,存在一条对应多条记录的时候,只会显示一条,对应的多条会被覆盖,所以会出现这种结果
在这里插入图片描述

		SELECT distribution_order_username as distributionOrderUsername,
			sum(if(a.chat_status=1,count,0)) as 'dtgwx' ,
			sum(if(a.chat_status=2,count,0)) as 'khjj' ,
			sum(if(a.chat_status=3,count,0)) as 'wjt' ,
			sum(if(a.chat_status=4,count,0)) as 'dhf',
			sum(if(a.chat_status=5,count,0)) as 'wlx',
			sum(if(a.chat_status=6,count,0)) as 'yjwx',
			sum(if(a.chat_status,count,0)) as 'total'
		FROM

		SELECT distribution_order_username as distributionOrderUsername,
			sum(if(a.buyctiyid=440100,count,0)) as 'gz',
			sum(if(a.buyctiyid=440300,count,0)) as 'sz' ,
			sum(if(a.buyctiyid=441900,count,0)) as 'dg' ,
			sum(if(a.buyctiyid in (440100,440300,441900),count,0)) as 'total'
		FROM

例子2:

在这里插入图片描述

select DATE_FORMAT(created_time,'%Y-%m-%d') as '日期',
sum(if(product='毛巾',price,0)) as '毛巾',
sum(if(product='枕头',price,0)) as '枕头'
from trade
GROUP BY DATE_FORMAT(created_time,'%Y-%m-%d');
### 回答1: 在MySQL中,COUNTSUM是聚合函数,可以用于统计某个字段的值的数量。比如,可以使用以下语句统计一个表中某个字段的值数量: SELECT COUNT(column_name) FROM table_name; 也可以使用以下语句统计某个字段的总: SELECT SUM(column_name) FROM table_name; 使用COUNTSUM函数可以方便地进行数据统计。 ### 回答2: MySQL中的COUNTSUM函数都用于对查询结果进行简单的数学运算。COUNT函数使用时需要指定要计算的列名,它返回查询结果行数或指定列中非NULL值的数量。SUM函数则用于计算指定列中所有非NULL值的总。 当需要同时统计某一列的行数时,可以将COUNTSUM组合使用。例如: SELECT COUNT(col1), SUM(col2) FROM table; 上面的查询语句将会统计表table中col1列的行数col2列的总。如果要同时统计多个列的行数,可以使用多个COUNTSUM函数,例如: SELECT COUNT(col1), COUNT(col2), SUM(col3), SUM(col4) FROM table; 上面的查询语句将会统计表table中col1col2列的行数col3col4列的总。 需要注意的是,在使用COUNTSUM函数时需要确保列名写正确,并且不能统计NULL或空值。如果需要统计NULL值,可以使用COUNT(*)代替COUNT(column)。如果需要统计空值,可以使用COUNT(column) + COUNT(*)代替COUNT(column)。 总的来说,MySQL中的COUNTSUM函数非常灵活,可以在查询中方便地进行统计计算,能够帮助用户更快速地获取所需要的数据。 ### 回答3: MySQL是一个非常流行的开源关系型数据库管理系统,提供了许多强大的查询功能。当我们需要统计一些数据时,可以使用MySQLcountsum函数。count函数返回指定列中的行数,而sum函数返回指定列中所有值的总。这两个函数的结合可以使用以下SQL语句实现: SELECT COUNT(column1), SUM(column2) FROM table_name; 其中,column1column2分别表示需要统计行数的列名,table_name表示需要统计的表名。这个查询将返回结果集,包含两列:第一列返回指定列的行数,第二列返回指定列中所有值的总。 使用countsum函数可以方便地对表中的数据进行分析总结。例如,我们可以使用这两个函数统计某个城市的人口数量总收入,或者统计某个商品的销售量总收入等等。此外,使用这两个函数还可以帮助我们发现数据中的异常值错误,进一步提高数据分析的准确性可信度。 总之,MySQLcountsum函数是非常实用的查询功能,可以帮助我们快速统计分析数据。对于需要进行数据分析处理的人员来说,掌握这些函数的使用方法是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值