【发布时间】:2016-10-19 05:36:09
【问题描述】:
我有一个包含以下数据的表格:
emp_id | emp_sal | emp_grp
1 5 HMCCR
1 10 HMCPR
1 20 HMCPR
1 30 HMCPR
1 40 HMCRR
2 40 HMCRR
2 50 HMCCR
我需要在 Teradata 中编写 sql,我需要为每组 emp_id 找到 min(emp_sal)。如果 emp_id 的一行或多行具有 emp_grp='HMCPR',则仅保留这些行并取 emp_sal 的最小值。当没有任何行具有 emp_grp='HMCPR' 并从该组中获取最小的 emp_sal 时,不要执行任何操作。
抱歉,如果您感到困惑。基于上述条件,我的输出应如下所示:
emp_id | emp_sal | emp_grp
1 10 HMCPR
2 40 HMCRR
我尝试了以下查询,但它为每个组提供了 min(emp_sal),因为我使用 group by emp_id, emp_grp
sel
emp_id,
case when emp_grp='HMCPR' then min(emp_sal)
else min(emp_sal) end emp_sal, emp_grp
from db_wrk.emp_sin
group by emp_id, emp_grp
谁能帮助我在 teradata 中获得预期的结果。
【问题讨论】: