首页
学习
活动
专区
圈层
工具
发布

SQL---count()函数结果为null时替换为0

在sql中,做count()统计时,如果结果为null,这条数据是不显示的,但是经常会有类似的需求,比如:统计江西省下的某11个市的企业数量,如果有些城市企业数量为0,会发现最后返回的结果不到11条...现在需要统计:江西商务厅下的所有的公司数量,按照city排序,sql很简单,如下: SELECT city, COUNT(*) AS count FROM entInfo WHERE department...吉安市', '宜春市', '抚州市', '上饶市' ) GROUP BY city 此时会得到如下结果,会发现,本来有11个市,但查询结果里面仅有8条数据,因为有三个市是没有数据的,查询结果为null...这个sql可以这么写: SELECT t.city,count(h.id) as count from ( SELECT '南昌市' city UNION SELECT '景德镇市' city UNION...ORDER BY count desc 查询结果如下: ?

6.3K20

Select count(*)、Count(1)、Count(0)的区别和执行效率比较

count()的执行效率比count(col)高,因此可以用count()的时候就不要去用count(col)。...count(col)的执行效率比count(distinct col)高,不过这个结论的意义不大,这两种方法也是看需要去用。...如果是对特定的列做count的话建立这个列的非聚集索引能对count有很大的帮助。 如果经常count()的话则可以找一个最小的col建立非聚集索引以避免全表扫描而影响整体性能。...在不加WHERE限制条件的情况下,COUNT()与COUNT(COL)基本可以认为是等价的; 但是在有WHERE限制条件的情况下,COUNT()会比COUNT(COL)快非常多; count(0)=...count(1)=count(*) count(指定的有效值)--执行计划都会转化为count(*) 如果指定的是列名,会判断是否有null,null不计算 当然,在建立优化count的索引之前一定要考虑新建立的索引会不会对别的查询有影响

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    select count(*)、count(1)、count(主键列)和count(包含空值的列)有何区别?

    我们分别用10053打印如下4组SQL的trace, SQL1:select count(*) from bisal; SQL2:select count(1) from bisal; SQL3:select...count(id1) from bisal; SQL4:select count(id2) from bisal; 我们来看下这四个SQL的执行结果, ?...前三个均为表数据总量,第四个SQL结果是99999,仅包含非空记录数据量,说明若使用count(允许空值的列),则统计的是非空记录的总数,空值记录不会统计,这可能和业务上的用意不同。...其实这无论id2是否包含空值,使用count(id2)均会使用全表扫描,因此即使语义上使用count(id2)和前三个SQL一致,这种执行计划的效率也是最低的,这张测试表的字段设置和数据量不很夸张,因此不很明显...可以看出一个问题,就是这三个SQL经过Oracle转换,执行的SQL其实都是select count(*) from bisal,因此对应的执行计划成本选择,这三个SQL相同, ?

    4.7K30

    SQL 简介:如何使用 SQL SELECT 和 SELECT DISTINCT

    SQL 语句是一段完整的代码,它进入数据库管理系统或 DBMS,以便对数据库中包含的数据执行各种功能。您可以通过编写查询来请求数据库中的特定信息,该查询是一种从数据库中的表返回或传递所需信息的语句。...SELECT 语句是 SQL 中最常见的操作,因为它指定要从数据库返回哪些数据。SELECT 语句及其意义SELECT 语句在 SQL 中经常称为数据查询语言 (DQL)。...使用 SELECT 语句,您可以指定与您希望查询返回的表中的行相匹配的值。...SELECT 语句也可以有许多可选的子句来优化查询并返回精确的结果。常用的条款包括:在哪里。SQL WHERE 命令指定要检索的行。通过...分组。...组合 SQL SELECT 和 INSERT 语句包含嵌套 SELECT 语句的 INSERT 语句允许您使用 SELECT 命令的结果集中的一行或多行快速填充表。

    2.2K00
    领券