[英]MYSQL sql to find id's in a table with count greater than x
我有一个包含原始数据的表。 为了检查不需要的额外数据,我试图确定哪些id(tickerid是列,incomedata是表)有超过50行的数据。 它必须遍历所有当前的股票代码ID(来自不同的表,赚钱者)并且只选择那些具有超过50行数据的id。 我可以通过id做一个select *但是我不知道如何迭代所有的id
您可以使用GROUP BY
按每个tickerid
,这样您就可以访问与每个tickerid
相关的汇总信息,例如COUNT
/ SUM
/ AVG
/ ...
出于您的目的,我们必须使用COUNT
。
然后HAVING
子句过滤掉50行或更少行的tickerid
:
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
这将只给出一个包含超过50行的tickerid
列表,但是如果要显示此列表中所有行和列表中的tickerid
信息,可以通过合并上面的列表来加入该列表。查询到:
SELECT a.*
FROM earningsdata a
INNER JOIN
(
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
) b ON a.tickerid = b.tickerid
SELECT tickerid
FROM earningstickers
WHERE tickerid
IN
(SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.