组聚合和描述性列

时间:2013-06-11 14:36:39

标签: sql sql-server netezza

组由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?

您是否愿意使用其他联接来添加描述性列?

1 个答案:

答案 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。任何表达式都适用于订单。