【发布时间】:2018-12-27 20:35:14
【问题描述】:
数据集上下文:表有一个列SEX_CODE,可以是M、F、B(已婚,所以名字是两个名字的组合)。所以household_ID 可以有三个重复项,都具有不同的SEX_CODE,并分为3 个单独的sub_id。 (还有 'U'-unknown,但那些从来没有重复的 household_ID 所以我们可以把它们排除在外)
目标:我需要处理以下条件:
如果
household_ID与SEX_CODE='M' 和 'F' 重复,则返回这两行。如果
household_ID与SEX_CODE='B' 和 'F'/'M' 重复 然后只返回'F'/'M'(或删除'B')。- 如果
household_ID有重复的SEX_CODE='B' 和 'F' 和 'M' 然后只返回“F”和“M”(或删除“B”)。
我遇到了几个问题
-
我的主要查询是按
household_ID和sub_ID进行分组,所以如果这些行具有相同的household_ID和sub_ID,我就无法吐出2 行。 我不知道如何分成 3 个案例。我可以使用
CASE和COUNT分为两种情况。
我觉得我需要以完全不同的方式来处理它,而不是按组,但我不知道如何按案例分组。
我可以在 Excel 中手动删除它们(突出显示重复项>按颜色过滤>过滤 sex_code 'B'>全部删除)但查询将像 60,000+ 行,所以我想知道是否可以这样做在SQL。但如果这不可能,请不要担心,我会在 Excel 中完成。
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。例如,您的数据库中没有任何内容被称为
person_id,这似乎是您描述问题的核心。 -
person_ID实际上应该是household_ID还是反之亦然? -
是的 person_id 是 home_id。我的错。对帖子进行了更改