选择一系列数字,然后链接到另一个查询

时间:2014-06-05 21:51:50

标签: sql teradata

这个问题是我最近问过的问题:( Sequencing in Teradata)。

如果我使用以下查询从1:50中选择一系列数字:

WITH Nums(N) AS (
    SELECT N 
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY i) As N
    FROM RDMAVWSANDBOX.xref_integers T
    ) T
    WHERE N <51
    )
SELECT * FROM Nums
ORDER BY N

产生预期结果:查询返回1字段宽50行长查询结果,编号为1:50.(Xref_integers是一个包含10K记录的虚拟表)。

但现在我想把它与我的实际工作结合起来。

如果我有一张名为“People”的桌子。 People中的每条记录都是购买卷心菜的一个例子。

所以我想知道购买1:50卷心菜的人数。

所以要与上述相结合 - 我该怎么做?

我被困了,因为我想做两个FROM语句:

SELECT * FROM NUMS和SELECT COUNT(People.C)FROM People。

如果人物中的字段名称是EMAIL,则只有一个字段,并且电子邮件的数量是一个人购买的卷心菜的数量,我该怎么说才能选择拥有N个卷心菜的人数。那么对于范围内的每个数字?

我知道我可以在这个例子中说SELECT EMAIL, COUNT(EMAIL) FROM PEOPLE GROUP By EMAIL,但如果我必须比较一个谨慎的数字范围 - 我该怎么做?

1 个答案:

答案 0 :(得分:1)

试试这个

SELECT * FROM Nums 
left join (SELECT EMAIL, COUNT(EMAIL) as nemail FROM PEOPLE GROUP By EMAIL) as x on 
nemail=n ORDER BY N