SELECT COUNT(*) FROM ( SELECT gtlTmp.nodeId, gtlTmp.flavorId, gtlTmp.localFlavorId, gtlTmp.aclId, SUM(coalesce(FlavorScores.value, 0)) as flavorScore FROM gtlTmp LEFT OUTER JOIN FlavorMap ON FlavorMap.flavorId = gtlTmp.flavorId LEFT OUTER JOIN ffFlavor ON ffFlavor.base = FlavorMap.base AND ( ffFlavor.flag = FlavorMap.flag OR (ffFlavor.flag is NULL AND FlavorMap.flag is NULL) ) LEFT OUTER JOIN FlavorScores ON FlavorScores.present = FlavorMap.sense AND ( FlavorScores.request = ffFlavor.sense OR ( ffFlavor.sense is NULL AND FlavorScores.request = 0 ) ) GROUP BY gtlTmp.nodeId, gtlTmp.flavorId, gtlTmp.aclId, gtlTmp.localFlavorId HAVING SUM(coalesce(FlavorScores.value, 0)) > -500000 ) AS Q;