【问题标题】:SQL Count people who have all 4 grandparentsSQL 统计拥有全部 4 个祖父母的人
【发布时间】:2020-03-17 15:51:02
【问题描述】:

所以我有以下表格:

1) 地址PERSON_ID | START_DATE | END_DATE | STREET | HOUSE | ROOM | ZIPCODE | CITY

2) 标识符NR | PERSON_ID | ISSUE_DATE | VALID_UNTIL

3) 结婚WIFE_ID | HUSBAND_ID | START_DATE | END_DATE

4) 个人ID | FIRST_NAME | LAST_NAME | BIRTHDATE | MOTHER_ID | FATHER_ID

我的任务是计算在数据库中记录了所有 4 个祖父母的人数。 所以如果我做对了,我必须找到表中所有MOTHER_IDFATHER_ID 不为空的人,其MOTHER_IDFATHER_ID 列也不为空。

我现在拥有的是:

SELECT COUNT(*)
FROM PERSON
WHERE MOTHER_ID IS NOT NULL AND FATHER_ID IS NOT NULL

它返回在数据库中记录父母双方的人数,我现在卡在这一点上。

【问题讨论】:

  • 祖父母的记录在哪里?您还有其他包含祖父母记录的表或列吗?
  • 我已经用其他表格更新了帖子

标签: sql oracle select


【解决方案1】:

我会自己加入表两次,一次是给父亲,一次是给母亲,然后检查他们的父母:

SELECT COUNT(*)
FROM   person p
JOIN   person f ON p.father_id = f.id AND f.father_id IS NOT NULL AND f.mother_id IS NOT NULL
JOIN   person m ON p.mother_id = m.id AND m.father_id IS NOT NULL AND m.mother_id IS NOT NULL

【讨论】:

    【解决方案2】:

    您应该将 Person 表的两个实例连接在一起,然后选择四个 Mother|father_1|2 不为空的行。 sql是这样的。

    
    SELECT p1.father_id AS father_id_1, p2.father_id AS father_id_2,p1.mother_id AS mother_id_1,p2.mother_id AS mother_id_2, 
    FROM Person p1
    JOIN Person p2 ON p1.FATHER_ID = p2.ID and p1.MOTHER_ID = p2.ID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多