Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL选择列值的最大计数_Mysql_Sql - Fatal编程技术网

MySQL选择列值的最大计数

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

我有一张叫欧陆杯的桌子

[在此处输入图像描述][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   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位。