1

我有一个包含原始数据的表。为了检查不需要的额外数据,我试图确定哪些 id(tickerid 是列,incomedata 是表)有超过 50 行数据。它必须遍历所有当前的股票代码(来自不同的表,收入标签)并只选择那些具有超过 50 行数据的 id。我可以通过 id 选择 *,但我不确定如何遍历所有 id

4

2 回答 2

5

您可以使用GROUP BYto group by each tickerid,这将使您可以访问与每个相关的汇总信息,tickerid例如COUNT// SUM/ AVGetc...

为了您的目的,我们必须使用COUNT.

然后HAVING子句过滤掉tickerid50 行或更少的 s:

SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50

这只会为您提供tickerid超过 50 行的 s 列表,但是如果您想显示tickerid此列表中的所有行和 s 信息,您可以通过将上述查询合并到:

SELECT a.*
FROM earningsdata a
INNER JOIN
(
    SELECT tickerid
    FROM earningsdata
    GROUP BY tickerid
    HAVING COUNT(*) > 50
) b ON a.tickerid = b.tickerid
于 2012-07-25T07:32:59.757 回答
0
SELECT tickerid 
FROM earningstickers 
WHERE tickerid 
IN 
    (SELECT tickerid
     FROM earningsdata
     GROUP BY tickerid
     HAVING COUNT(*) > 50
     )
于 2012-07-25T07:39:27.777 回答