当数据为空且显示结果时出现警告时,我遇到了一个问题.

这是我的代码:-

SELECT DISTINCT c.username             AS assigner_officer,
                d.description          AS ticketcategory,
                (SELECT Count(closed)
                 FROM   ticket
                 WHERE  assigned_to = c.user_id
                        AND closed IS NOT NULL
                 GROUP  BY assigned_to)closedcases,
                (SELECT Count(closed)
                 FROM   ticket
                 WHERE  assigned_to = c.user_id
                        AND closed IS NULL
                 GROUP  BY assigned_to)opencases
FROM   ticket a
       JOIN ticketlog b
         ON a.ticketid = b.ticketid
       JOIN access c
         ON a.assigned_to = c.user_id
       JOIN ticket_category d
         ON a.cat_code = d.id
       JOIN lookup_department e
         ON a.department_code = e.code 

结果如下:-

 Warnings: ---> 
   W (1): Warning: Null value is eliminated by an aggregate or other SET operation.
          <--- 
 assigner_officer     ticketcategory     closedcases     opencases    
 -------------------  -----------------  --------------  ------------ 
 abdulhafiz           Enquiry            (null)          0            
 affan                Enquiry            12              (null)       
 amirul               Enquiry            1               (null)       
 azrul_fahmi          Enquiry            45              0            
 Azwani               Enquiry            (null)          0            
 chai                 Enquiry            4               (null)       
 dalinawati           Enquiry            1               0            
 Emmy                 Complaints         (null)          0            
 Fadhlia              Enquiry            38              0            
 fairulhalif          Others             1               (null)       
 farikh               Enquiry            (null)          0            
 ismailh              Enquiry            28              0            
 izzahanna            Enquiry            (null)          0            
 Kamsuzilawati        Enquiry            1               (null)     

推荐答案

你通常会用COUNT来总结一个UID.因此

COUNT([uid])将产生警告:

警告:通过聚合或其他集合操作消除空值.

与左连接一起使用时,计数对象不存在.

在这种情况下,使用COUNT(*)也会导致错误的结果,因为这样会计算存在的结果总数(即父项).

使用COUNT([uid])是一种有效的计数方式,而警告只不过是一个警告.但是,如果您担心,并且希望在这种情况下获得UID的真实计数,那么您可以使用:

SUM(CASE WHEN [uid] IS NULL THEN 0 ELSE 1 END) AS [new_count]

这不会给您的查询增加很多开销.

Sql相关问答推荐

调用存储过程时SQL服务器TDS协议响应问题

Postgresql -如何计算刷卡和刷卡时间

GROUP BY与多个嵌套查询T—SQL

在SQL中使用类别值将行转置为列

PostgreSQL基于2个COLS的任意组合 Select 唯一行

过go 四周未填充的数据,即W50,51,52-SQL

在PostgreSQL中汇总连接表中的 case 值

通过UPDATE SELECT更新表时出现问题

当 ansible 变量未定义或为空时,跳过 sql.j2 模板中的 DELETE FROM 查询

将最近的结束日期与开始日期相匹配

如何根据 Google BigQuery 中的特定列值连接一列的 N 行?

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

计算 BigQuery 中列的中值差 - 分析函数不能作为聚合函数的参数

使用 SQL 计算一年中任意 3 个月期间的总成本

当该日期的至少两条记录具有相同的持续时间或至少一条记录的持续时间为 0 时,如何标记该日期的所有记录

如何显示最常引用条目的详细信息

oracle中多行的跨日期范围的交集

在 MySql 数据库中的两个日期之间搜索

如何通过存储过程将 root 的下一个子 node 作为父 node ?

在 Athena / Presto 中提取 JSON 对象以获取动态密钥