如何在Netezza SQL中编写派生查询?

时间:2013-02-12 07:38:11

标签: sql netezza

我需要查询基于inviteid的数据。对于每个inviteid,我需要拥有前5个ID和ID描述。

我看到我写的查询在全世界都在寻找。我没有注意到它的错误或任何错误。

代码是:

SELECT count(distinct ID),
  IDdesc,
  inviteid,
  A
FROM (
  SELECT
    ID,
    IDdesc,
    inviteid,
    RANK() OVER(order by  invtypeid asc ) A
  FROM Fact_s
    --WHERE dateid ='26012013'
  GROUP BY invteid,IDdesc,ID
  ORDER BY invteid,IDdesc,ID
) B
WHERE A <=5
GROUP BY A, IDDESC, inviteid
ORDER BY A

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解了您的要求,但据我所知,派生表中的group by没有必要(正如Mark提到的order by)因为你是使用窗口功能。

你可能想要row_number()而不是rank()

在外部查询中包含rank()的结果似乎也很可疑。

所以这导致以下声明:

SELECT count(distinct ID),
       IDdesc,
       inviteid
FROM (
  SELECT ID,
         IDdesc,
         inviteid,
         row_number() OVER (order by invtypeid asc ) as rn
  FROM Fact_s
) B
WHERE rn <= 5
GROUP BY IDDESC, inviteid;