组由a,b和c列定义。每组的x,y和z列相同。样品:
a|b|c|x|y|z| ....
1 1 1 p r s
1 1 1 p r s
1 1 1 p r s
2 1 2 t u v
2 1 2 t u v
我希望在不使用聚合函数(max(t.x),...)
的情况下实现以下目的select t.a, t.b, t.c,count(*), t.x, t.y, t.z, ....
from t
group by t.a, t.b, t.c;
是否可以在select语句中使用任何其他函数来包含列x,y和z?
您是否愿意使用其他联接来添加描述性列?
答案 0 :(得分:0)
如果组中的列相同,只需将它们包含在group by
子句中:
select t.a, t.b, t.c,count(*), t.x, t.y, t.z, ....
from t
group by t.a, t.b, t.c, t.x, t.y, t.z
如果你想要一个带有计数的随机行,那么使用窗口函数:
select t.*
from (select t.*,
count(*) over (partition by a, b, c) as cnt,
row_number() over (partition by a, b, c order by (select NULL)) as seqnum
from t
) t
where seqnum = 1
SQL Server中使用order by (select NULL)
。我不确定它是否适用于Netezza。任何表达式都适用于订单。