这个问题是我最近问过的问题:( 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
,但如果我必须比较一个谨慎的数字范围 - 我该怎么做?
答案 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