具有活动子级的父级的SQL SUM计数

时间:2015-05-20 09:10:19

标签: mysql sql select sum

Gnuplot

我目前在我的select语句中有上述代码,但它返回活动子项的计数,而不是具有活动子项的父项的数量。虽然我的数据的很大一部分是单个孩子的元素,但是有些父母会有大量的孩子,他们真的搞乱了。如何计算生育状况超过0的孩子的父母数量的最佳方法是什么?

表格中的相关字段如下所示。

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

2 个答案:

答案 0 :(得分:1)

你需要一个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))

答案 1 :(得分:0)

SELECT count(*)
FROM parent
WHERE id IN (SELECT DISTINCT parent_id
             FROM children
             WHERE status > 0);

我不知道你的表是如何设置的,但是这样的东西可能会起作用 父母和子女是不同的桌子还是同一张桌子? (说实话并不重要,因为这对两者都有效,但如果你有两个不同的表,你可能能够以不同的方式解决它)