zoukankan      html  css  js  c++  java
  • SQL语句case when外用sum与count的区别

     

    SQL语句case when外用sum与count的区别



    如下这个表TEST: category | commdity | price ------------+------------+------- 衣服 | T恤 | 1000 办公用品 | 打孔器 | 500 厨房用具 | 菜刀 | 3000 厨房用具 | 高压锅 | 6800 厨房用具 | 叉子 | 500 厨房用具 | 擦菜板 | 880 办公用品 | 圆珠笔 | 100 衣服 | 运动T恤 | 4000 如果我想把商品按照1000元以下,1000-3000, 3000 以上分为三个档次显示出来,正确的语句是: SELECT SUM (CASE WHEN price <= 1000 THEN 1 ELSE 0 END)AS low, SUM (CASE WHEN price BETWEEN 1001 AND 3000 THEN 1 ELSE 0 END)AS mid, SUM (CASE WHEN price > 3000 THEN 1 ELSE 0 END)AS high FROM TEST; 得出结果 low | mid | high -----+-----+------ 5 | 1 | 2
    当把上述语句的sum换成count时,得出结果:
      low | mid | high
     -----+-----+------
        8  |   8   |    8
    如果只是用列来显示,SELECT COUNT(price) FROM TEST WHERE price <= 1000 可以得出正确的结果:
    
     low 
     ----- 
        5  
    所以用sum的结果是对的。
    原因是什么呢?

    三个case语句效果相同,其实就是类似于增加一个字段,这个字段,满足条件的为1,不满足的是0,这样sum的效果,就是将所有的1加起来,也就是所有满足条件的记录个数。

    而count,会不管是1还是0,都会统计,这样怎么算都是总条目数8个。

    9.17. Conditional Expressions

    CASE WHEN 及 SELECT CASE WHEN的用法、SUM函数中的数字参数(转)

  • 相关阅读:
    单例模式
    js事件
    oracle_to_excel
    jquery_2
    jquery_1
    4.linux 复制,删除,重命名
    一个tomcat下部署多个springboot项目
    3.centos7 安装oracle
    桥接模式
    组合模式
  • 原文地址:https://www.cnblogs.com/cdyboke/p/7737525.html
Copyright © 2011-2022 走看看