zoukankan      html  css  js  c++  java
  • Mysql中 使用有条件的sum/count

    其他知识点补充:

    • 随机数函数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的数量。
    0 OR null null
    1 OR null 1
    null OR null null
    0 AND null 0
    1 AND null null
    null AND null null

    不必要的情况尽量不用,性能低; 性能参考: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加条件,性能低下,尽量不用

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

  • 相关阅读:
    android SQLite使用
    蓝牙从搜索到成功配对的全过程
    vscode 开发.net core 从安装到部署 教程详解
    ServiceStack 简单服务搭建
    MongoDB 安装配置
    request.url 端口 错误
    Python 之 hello world
    .NET DateTime 源码学习
    Parallel.For 平行算法 使用
    Thread.Join 和 Task.Wait 方法
  • 原文地址:https://www.cnblogs.com/CatcherLJ/p/11635905.html
Copyright © 2011-2022 走看看