Mysql中 使用有条件的sum/count

本文详细介绍了SQL中随机数函数RAND()及其与四舍五入、向上取整、向下取整函数的结合使用。重点讲解了IF()函数在查询中的应用,如在SUM和COUNT中的条件统计。同时,提醒在复杂查询中使用条件统计可能带来的性能问题,并提供了表的原始数据示例,解释了为什么在某些情况下不推荐使用此类条件统计。
摘要由CSDN通过智能技术生成

其他知识点补充:

  • 随机数函数RAND():生成0到1的小数
  • 小数取整:四舍五入:ROUND()、向上取整:CEILING()、向下取整:FLOOR()
  • if()函数:SELECT if(sex=0,'女','男') AS sex FROM student; 这个if()函数就相当于java里面的三目运算符。if(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。但是如果在sum中使用了if()函数,就是对结果值进行累加,例如SUM(IF(`hosts`.state = 0, 1, 0)),当hosts.state的值为0时,和加1,不为0时,和加0。
  • 在count()中使用条件,COUNT(type=2 OR NULL),count(*)只统计函数,count(列)统计记录中该列不为null的数量。
0ORnullnull
1ORnull1
nullORnullnull
0ANDnull0
1ANDnullnull
nullANDnullnull

 

 不必要的情况尽量不用,性能低; 性能参考:http://www.voidcn.com/article/p-ypikcnit-om.html

 

在SQL的统计函数中使用条件, 其用途不在于代替count函数配合where函数进行聚合计算,而是在复杂查询中在sum/count中加入条件,一次性求出不同条件下的聚合结果。但性能低下,不推荐使用。

 

表的原始数据

SELECT SUM(type=3) FROM test_count_sum;   -- 3, 查询type=3的记录数

SELECT SUM(IF(type=2,1,0)) AS sex FROM test_count_sum;   -- 2, 查询type=2的记录数,true就+1,false就+0

 

SELECT COUNT(type=3) FROM test_count_sum; -- 6 表达式无效

SELECT COUNT(IF(type=2,1,0)) AS sex FROM test_count_sum;  -- 6 表达式无效

 

SELECT COUNT(type=2 OR NULL) FROM test_count_sum;   --2, 使用count加条件,性能低下,尽量不用

有一些高端的语法只适用于拓展技术点,实际比不上最常用的语法!

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值