本站是提供个人知识管理的网络存储空间所有内容均由用户发布,不代表本站观点如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话: 与我们联系
count函数的定义可见定义如下:
|
|
|
注意,COUNT 的参数expression鈳以为常量(像上面的23…),表的列,函数还可以是语句,具体可见的定义下面展示了这个应用。
如果想为cte1中列Description中有字符串'fox’进行计数典型的做法是:
这种做法是where中过滤,另外一种方式是在expression中定义查找条件:
如果description列中没有字符串'fox'那么PATINDEX函数返回的是0,NULLIF函数因为两个参数相等那么结果是NULL,因为NULL不会参与计数所以列中没有'fox’的行不会
参与计数,达到了查找的目的
当然,我们还可在expression中使用case表达式:
注意ELSE语句後面必须是NULL如果是非NULL,ELSE语句也会参与COUNT计数的
2 在count函数后接聚合窗口函数OVER。注意聚合窗口函数中是不能有ORDER BYORDER BY只能出现在排名函数的over子句中。OVER字句的定义见
以上在COUNT 的expression中设置条件显然不是一种很优化的方式,因为这种方式会首先读取表中的所有数据是对表进行扫描,而在where子呴中设置条件进行过滤是一种很好的方式因为从逻辑上讲,where先于select执行所有数据库引擎只会读取部分数据,不是读取所有数据如果要對以表中c1列的null进行统计,可以有两种方式:
最后看看执行计划的比较,后面的方式多了一个步骤(过滤):
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。