mysql select count 多个条件

标签 mysql select count nullif

我有一个包含元素的表格。

每个元素都有其父instance_id,即number_of_lines代码, 以及删除时的deletion_date

我构建了一个查询,用于对按实例分组的元素进行计数,其中包含具有代码(number_of_lines 不为零)的元素和已删除的元素(deletion_date 不为空)的元素总数)

SELECT instance_id, 
    COUNT(id) AS elementsfound,
    COUNT(NULLIF(number_of_lines,0)) AS havecode,
    (COUNT(id)-COUNT(NULLIF(number_of_lines,0))) AS havenocode,      
    COUNT(deletion_date) AS beenremoved,          
    (COUNT(id)-COUNT(deletion_date)) AS stillexistent        
  FROM elements        
  GROUP BY instance_id

我得到了正确的结果(缩写)

+-------------+---------------+----------+------------+-------------+---------------+
| instance_id | elementsfound | havecode | havenocode | beenremoved | stillexistent |
+-------------+---------------+----------+------------+-------------+---------------+
|          59 |         93123 |    24109 |      69014 |       45397 |         47726 |
|          69 |         46399 |     7837 |      38562 |       23929 |         22470 |
|          71 |         41752 |     8746 |      33006 |        6960 |         34792 |
|          75 |         29097 |     4303 |      24794 |       13670 |         15427 |
|          77 |         41681 |     9858 |      31823 |       10540 |         31141 |
|          79 |         17800 |      695 |      17105 |       13391 |          4409 |
|          82 |         25323 |     2481 |      22842 |       20914 |          4409 |
|          83 |         12831 |     2544 |      10287 |        2988 |          9843 |

...

现在,我想添加一列,其中包含每个实例的元素数量,两者仍然存在(deletion_date为空)有代码(number_of_lines 不为零)

我找不到添加具有多列的 NULLIFCASE WHEN 的方法。

如何包含多列条件计数器?

最佳答案

我假设您的意思是仍然存在的记录应该删除日期为NULL。

试试这个:

SELECT instance_id, 
    COUNT(id) AS elementsfound,
    COUNT(NULLIF(number_of_lines,0)) AS havecode,
    (COUNT(id)-COUNT(NULLIF(number_of_lines,0))) AS havenocode,      
    COUNT(deletion_date) AS beenremoved,          
    (COUNT(id)-COUNT(deletion_date)) AS stillexistent,
    COUNT(IF(deletion_date IS NULL AND number_of_lines > 0, 1, NULL)) existentwithcode
  FROM elements        
  GROUP BY instance_id

关于mysql select count 多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756147/

相关文章:

mysql - 使用 Spring、hibernate 和 C3P0 的设置重现 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

php - 如何使用 php 从表中选择值使用一些键

python spark - 根据SQL中的其他数据框行IN子句过滤数据框中的行

postgresql - 索引组织表能否为更快的 SELECT COUNT(*) FROM 表铺平道路

javascript - jQuery 在 for 循环中动态增加变量名

mysql - mysql 大页面选项的问题

java - 通过在下拉列表中选择数据库列来调用自动建议搜索框的jsp

linq-to-sql - 使用 Linq-To-SQL 插入/选择

sql - PL/SQL 函数返回 ORA-06503 : PL/SQL: Function returned without value

Django 模板过滤器 : counting objects