我有一个包含原始数据的表。为了检查不需要的额外数据,我试图确定哪些 id(tickerid 是列,incomedata 是表)有超过 50 行数据。它必须遍历所有当前的股票代码(来自不同的表,收入标签)并只选择那些具有超过 50 行数据的 id。我可以通过 id 选择 *,但我不确定如何遍历所有 id
问问题
3670 次
2 回答
5
您可以使用GROUP BY
to group by each tickerid
,这将使您可以访问与每个相关的汇总信息,tickerid
例如COUNT
// SUM
/ AVG
etc...
为了您的目的,我们必须使用COUNT
.
然后HAVING
子句过滤掉tickerid
50 行或更少的 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 回答