我有一个表格,我需要根据是否满足某些条件来计算行数。该表具有 ID、级别和名称。Level可以是“1”或“2”,Number可以是“AAA 100”,数字范围在100-199之间,或者“AAA 500”,数字范围是500-599。一个 ID 可以有一个与它相关联的名称,来自任一范围,我想根据每个 ID 的级别是“1”还是“2”来计算来自某个范围的名称。
示例表:
我需要做的是,如果 Level 列 = 2,则只返回数字大于或等于 500 的 Name 值的计数。如果 ID 的 Level = 1,则仅返回介于两者之间的 Name 值的计数100-199,或少于 500。
所需的输出是:
感谢您的帮助!
嗯。. . 我想你想要每个 id 一行。如果是这样,您可以使用单个聚合来执行此操作,并且coalesce()
:
select id,
coalesce(sum(case when level = 2 and name >= 'AAA 500' then 1 end),
sum(case when level = 1 and name < 'AAA 500' then 1 end)
) as cnt
from t
group by id;
如果您想要两个级别(如果两者都存在),则只需添加level
到group by
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句