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