假设我有一个带有列的简单投票表
id(primaryKey),token(int),candidate(int),rank(int).
我想提取具有特定排名的所有行,按候选人分组,最重要的是仅使用最小计数(*)。
到目前为止我已经达到了
SELECT candidate, count( * ) AS count
FROM voting
WHERE rank =1
AND candidate <200
GROUP BY candidate
HAVING count = min( count )
但是,它返回空集。如果我将 min(count) 替换为实际最小值,则它可以正常工作。
我也尝试过
SELECT candidate,min(count)
FROM (SELECT candidate,count(*) AS count
FROM voting
where rank = 1
AND candidate < 200
group by candidate
order by count(*)
) AS temp
但这导致只有 1 行,我有 3 行,其最小计数相同,但候选者不同。我想要所有这 3 行。
任何人都可以帮助我。具有相同最小计数(*)值的行数也会有所帮助。
样本相当大,所以我显示了一些虚拟值
1 $sampleToken1 101 1
2 $sampleToken2 102 1
3 $sampleToken3 103 1
4 $sampleToken4 102 1
这里,当根据候选分组时,有 3 行与 count( * ) 结果相结合
candidate count( * )
101 1
103 1
102 2
我希望显示前 2 行,即 count(*) = 1 或任意最小值