sql - 案例优先级查询中的 PostgreSQL 问题
问题描述
我正在使用 PostgreSQL。我被困在构建查询中。如果任何一个优先级与案例匹配,我们如何通过优先考虑数据并丢弃其余数据来搜索结果?
按家庭明智分组
如果家庭中的一个人的承诺级别为“VOTER”,那么应该获取它而不是同一家庭中其他状态不同的人,例如“COMMITTED”、“REACHOUT”或“NEUTRAL”</p>
如果家庭中的一个人的承诺级别为“COMMITTED”,那么应该获取它而不是同一家庭中状态不同的其他人,例如“REACHOUT”或“NEUTRAL”</p>
该层次结构遵循“VOTER”、“COMMITTED”、“REACHOUT”、“NEUTRAL” 如果家庭中的所有人员都具有相同的承诺级别,则应获取人员手机号码(如果不为空)。
其他被丢弃
带有数据的示例表
ID COMMITTED LEVEL MOBILE NUMBER FAMILY NUMBER
1 VOTER 234828288 1
2 COMMITED 262349911 1
3 COMMITED 924792922 2
4 REACHOUT 82639472 2
5 VOTER 79246826234 3
6 VOTER NULL 3
输出:预期结果
ID COMMITED LEVEL MOBILE NUMBER FAMILY NUMBER
1 VOTER 234828288 1
3 COMMITED 924792922 2
5 VOTER 79246826234 3
解决方案
您可以使用以下方法执行此操作distinct on
:
select distinct on (family_number) t.*
from t
order by family_number,
(case when committed_level = 'Voter' then 1
when committed_level = 'COMMITTED' then 2
when committed_level = 'REACHOUT' then 3
when committed_level = 'Neutral' then 4
else 5
end),
(case when mobile_number is not null then 1 else 2 end);
推荐阅读
- powerbi - 平均前 N 次出现
- javascript - 如何使用像素将元素附加到页面的特定区域
- redirect - 如何使用 URL 屏蔽将 imgur 图像重定向到另一个域?
- javascript - Async function returning existing array as undefined
- assembly - 将 32 位寄存器移动到 8 位寄存器中
- python - 在字典中查找键直到没有更多关联值的函数
- android - 如何获取我的代码以提供我当前的位置?
- android - 返回共享元素的动画不起作用
- javascript - 获取父 javascript 的 CSS maxWidth 值
- javascript - 获取正斜杠之间的所有可能匹配项