MySQL选择列值的最大计数
我有一张叫欧陆杯的桌子 [在此处输入图像描述][1]MySQL选择列值的最大计数,mysql,sql,Mysql,Sql,我有一张叫欧陆杯的桌子 [在此处输入图像描述][1] Group Country Rank Jersey Position Age Selections Club Player A Brazil 3 18 Midfielder 29 24 Internazionale Hernanes A Cameroon 56 18 Midfielder 28 38 Antalyaspor Eyong Enoh A Croa
Group Country Rank Jersey Position Age Selections Club Player
A Brazil 3 18 Midfielder 29 24 Internazionale Hernanes
A Cameroon 56 18 Midfielder 28 38 Antalyaspor Eyong Enoh
A Croatia 18 18 Forward 34 92 VfL Wolfsburg Ivica Olic
A Mexico 20 18 Defender 27 104 Bayer Leverkusen Andres Guardado
B Australia 62 18 Goalie 32 8 Adelaide United Eugene Galekovic
B Chile 14 18 Defender 28 65 Nottingham Forest Gonzalo Jara
B Spain 1 18 Defender 25 26 Barcelona Jordi Alba
B Netherlands 15 18 Midfielder 24 6 Norwich City Leroy Fer
我必须编写一个SQL查询,根据球员的球衣号码对球员进行分组,然后,对于每个球衣号码组,返回该球衣号码的最常见位置
例如,18号球衣有3名中场球员,8名防守球员和2名守门员,结果应该是18号球衣,后卫bcos max球员和18号球衣
我试过了
select jersey,position,count(position) as cnt
from euro_cup2
group by jersey,position
having count(position) in
(select max(cnt) from (select jersey,position,count(position) as cnt
from euro_cup2
group by jersey,position)a)
但它不起作用。非常感谢您提供的任何帮助我查看了您的所有评论,这将为您提供搜索内容:
SELECT
euro_cup2.jersey,
a.position,
MAX(cnt) as count
FROM euro_cup2
LEFT JOIN
(SELECT
jersey,
position,
(COUNT(position)) AS cnt
FROM euro_cup2
GROUP BY jersey,position) AS a ON euro_cup2.jersey=a.jersey
GROUP BY jersey;
结果如下:
关于试试这个,应该可以
SELECT Jersey,
Group_concat(Position separator ','),
Group_concat(CountOfPosition separator ',')
FROM (SELECT euro_cup.Jersey,
euro_cup.Position,
Count(euro_cup.Position) AS CountOfPosition
FROM euro_cup
GROUP BY euro_cup.jersey,
euro_cup.Position) a
WHERE CountOfPosition = (SELECT Max(CountOfPosition)
FROM (SELECT euro_cup.jersey,
euro_cup.Position,
Count(euro_cup.Position) AS CountOfPosition
FROM euro_cup
GROUP BY euro_cup.jersey,
euro_cup.Position) b
WHERE a.jersey = b.jersey)
GROUP BY Jersey
您的示例数据有3个defender,而不是8个defender。3名中场球员和3名后卫之间有平局,在这种情况下,我只粘贴了样本数据。但是平局是可能的。所以所有其他列都是不相关的?如果在顶部出现平局,您希望显示所有平局的位置?将您的查询改为我的答案,然后我们可以查看这是否是您想要的。有一个SQL问题。RegardsI得到了你的观点-子查询是一个数字的结果,而不是一个集合。但是子查询从SELECT JERSY、position、COUNTposition中选择MAXcnt作为euro_cup2 GROUP BY JERSY的cnt,位置作为aStill只产生一条记录,记录整个数据集32的最大位置数,而不是每个球衣位置cnt 1守门员32的最大位置数,你确定吗?我模拟了更多的球衣,我得到了每件球衣的最大值,每件球衣2条线,因为我把两名球员放在3位。