mysql - SQL SUM 具有活跃 child 的 parent 数量

标签 mysql sql select sum

'SUM(IF(children.status > 0, 1, 0)) AS count'

目前,我的 select 语句中包含上述代码,但它返回活跃 child 的数量,而不是拥有活跃 child 的 parent 数量。虽然我的数据很大一部分是单个 child 元素,但有些 parent 有大量 child ,这确实会搞乱计数。计算 child 状态高于 0 的 parent 数量的最佳方法是什么?

表格中的相关字段定义如下。

parent {
int id
}

children {
int id
int parent_id
int status
}

最佳答案

您需要一个 DISTINCT 来消除重复项。这是使用 CASE:

COUNT(DISTINCT CASE WHEN children.status > 0 THEN parent_id END)

您可能可以对 IF 执行相同的操作,但我更喜欢标准 SQL 的 CASE:

COUNT(DISTINCT IF(children.status > 0,parent_id, NULL))

关于mysql - SQL SUM 具有活跃 child 的 parent 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345199/

相关文章:

mysql - (ASP) MS Access -> MySQL : Error in Select, 其中 [..] 字符串

java - Apache Olingo 的 jdbc 连接器

MySQL计算多个列/表的最大值

PHP 和 XML : Dlvr. 它不起作用

sql - 如何从 ruby​​ on rails 上的有序列表中按计数子查询进行排序和分组

mysql - MySQL 中的模仿表( View 或存储函数)

sql - 选择中的自动排序

php - MySQL 从 3 个表中选择并将其放入 PHP 数组中

mysql - 红帽 6.4 上的 PHPMYAdmin

mysql - 在 MySQL 中使用 0..1 :1. .n 表进行 SQL 自动清理