【问题标题】:counting null data in MySQL在 MySQL 中计算空数据
【发布时间】:2010-09-28 02:57:56
【问题描述】:

假设我有一个表,其中的数据如下:

name       status
bob        single
bob        single
jane       null
tina       null
shane      married

我想如果状态“单身或数据为空”它意味着单身。因此,如果数据空脚本可以将其读取为单个并且可以一起计数。 所以我可以显示如下结果:

Single     Married
3            1

我试过了,但它不起作用:

SELECT SUM(IF(status='single',1,0)) AS Single,
       SUM(IF(status='married',1,0)) AS Married
FROM table

【问题讨论】:

    标签: mysql null count pivot-table


    【解决方案1】:

    用途:

    SELECT SUM(CASE WHEN x.status = 'single' OR x.status IS NULL THEN 1 ELSE 0 END) AS single,
           SUM(CASE WHEN x.status = 'married' THEN 1 ELSE 0 END) AS married
      FROM (SELECT DISTINCT
                   t.name,
                   t.status
              FROM YOUR_TABLE t) x
    

    【讨论】:

    • SUM(CASE WHEN x.status = 'single' OR status IS NULL THEN 1 ELSE 0 END) 作为单身,我可以这样做吗?
    【解决方案2】:

    如果您知道只有“单身”、“已婚”和 null 作为选项,这将起作用:

    SELECT SUM(IF(status!='married',1,0)) AS Single,
           SUM(IF(status='married',1,0)) AS Married
    FROM table
    

    否则试试

    SELECT SUM(IF(status='single' OR status is null,1,0)) AS Single,
           SUM(IF(status='married',1,0)) AS Married
    FROM table
    

    【讨论】:

    • 如何防止重复数据?
    • 我不确定你的意思。这不会将任何行计算两次,因为条件是互补的。
    • 如果您尝试了查询但仍有问题,请使用新问题和新查询更新问题,我们可以看看该怎么做。
    【解决方案3】:
    SELECT SUM(IF(status='single' OR status IS NULL,1,0)) AS Single,
           SUM(IF(status='married',1,0)) AS Married
    FROM table
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-08
      • 2023-03-22
      • 2020-01-06
      • 2013-08-18
      • 2012-04-08
      • 2018-01-24
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多