我有一个包含原始数据的表。为了检查不需要的额外数据,我试图确定哪些 id(tickerid 是列,收益数据是表)有超过 50 行数据。它必须循环遍历所有当前的股票代码 ID(来自不同的表,收益股票)并仅选择那些具有超过 50 行数据的 ID。我可以通过 id 进行 select * 但我不知道如何迭代所有 id
您可以使用GROUP BYgroup by every tickerid,这将使您能够访问与每个相关的聚合信息,tickerid例如COUNT/ SUM/ AVG/etc...
为了您的目的,我们必须使用COUNT.
然后该HAVING子句过滤掉tickerid50 行或更少的 s:
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
Run Code Online (Sandbox Code Playgroud)
tickerid这只会为您提供超过 50 行的列表,但是如果您想显示tickerid此列表中的所有行和信息,您可以通过将上述查询合并到该列表中来将表连接到此列表:
SELECT a.*
FROM earningsdata a
INNER JOIN
(
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
) b ON a.tickerid = b.tickerid
Run Code Online (Sandbox Code Playgroud)