+
+def count_children(newLine):
+
+ s = "SELECT count(*),nc"\
+ +" FROM ("\
+ +" SELECT count(*) AS nc"\
+ +" FROM parents"\
+ +" GROUP BY parentID"\
+ +" HAVING parentID <>'?'"\
+ +" AND parentID <> '0')"\
+ +" GROUP BY nc;"
+
+ out = ''
+ for row in run_query(s,()):
+ out = out + print_children_count(row,newLine)
+ return out
+
+def parents_with_children(nChildren,newLine):
+ s = "SELECT name,parentID"\
+ + " FROM parents"\
+ + " LEFT JOIN people"\
+ + " ON parentID = people.ID"\
+ + " GROUP BY parentID"\
+ + " HAVING count(*) = ?"\
+ + " AND parentID <> 0"\
+ + " ORDER BY bornYear;"
+
+
+ u = "SELECT count(*)"\
+ +" FROM parents INNER JOIN people"\
+ +" ON parents.ID = people.ID"\
+ +" WHERE parentID = ?"\
+ +" AND (diedyear-bornyear>? OR died='present');"
+
+ out = "People who had " + str(nChildren)
+ if nChildren==1:
+ out = out + " child"
+ else:
+ out = out + " children"
+ out = out + ':' + newLine
+
+
+
+ for row in run_query(s,(nChildren,)):
+ out = out + name_html(row,newLine)
+ for r in run_query(u,(row[1],1)):
+ out += " %d survived infancy" % r[0]
+ for r in run_query(u,(row[1],18)):
+ out = out +" and " +str(r[0])+" survived to adulthood"
+ out = out +newLine
+
+ return out
+