Teradata 中每列的唯一计数
Unique Counts in Teradata per column
我有一个包含以下内容的数据集
ID SubID
1 1
1 2
2 1
3 1
我想要第三列,基本上标记第一个 ID,并且忽略任何后续相同的 ID
本质上,有人(最终用户)想要保留详细信息,但也想在 excel
中总结唯一 ID
ID SubID ident
1 1 1
1 2 0
2 1 1
3 1 1
我想我可以在这里使用 rank
函数,但希望得到任何提示
您可以使用 row_number()
:
select t.*,
(case when row_number() over (partition by id order by subid) = 1
then 1 else 0
end) as ident
from t;
鉴于您的示例数据,这个更简单的版本可以工作:
select t.*, (case when subid = 1 then 1 else 0 end) as ident
from t;
如果您的所有数据都是如此,那么可能甚至不需要额外的列。用户可以使用sumif()
或countif()
来做Excel中的条件逻辑。
没有排名,但是 ROW_NUMBER:
select ID, SubID,
case when ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SubID) = 1
then 1
else 0
end
from tab
我有一个包含以下内容的数据集
ID SubID
1 1
1 2
2 1
3 1
我想要第三列,基本上标记第一个 ID,并且忽略任何后续相同的 ID 本质上,有人(最终用户)想要保留详细信息,但也想在 excel
中总结唯一 IDID SubID ident
1 1 1
1 2 0
2 1 1
3 1 1
我想我可以在这里使用 rank
函数,但希望得到任何提示
您可以使用 row_number()
:
select t.*,
(case when row_number() over (partition by id order by subid) = 1
then 1 else 0
end) as ident
from t;
鉴于您的示例数据,这个更简单的版本可以工作:
select t.*, (case when subid = 1 then 1 else 0 end) as ident
from t;
如果您的所有数据都是如此,那么可能甚至不需要额外的列。用户可以使用sumif()
或countif()
来做Excel中的条件逻辑。
没有排名,但是 ROW_NUMBER:
select ID, SubID,
case when ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SubID) = 1
then 1
else 0
end
from tab