Mysql 将两个子查询的结果彼此相除
我看到的大多数问题似乎都是对输出为1个单一值的子查询执行操作 我只进行了两个查询。第一个是每个俱乐部的足球运动员人数Mysql 将两个子查询的结果彼此相除,mysql,group-by,Mysql,Group By,我看到的大多数问题似乎都是对输出为1个单一值的子查询执行操作 我只进行了两个查询。第一个是每个俱乐部的足球运动员人数 SELECT COUNT(*) as count FROM player_info i GROUP BY i.club ORDER BY i.club; 输出 club count Arsenal 60 Bournemouth 52 club count Arsenal 5 Bournemouth
SELECT COUNT(*) as count
FROM player_info i
GROUP BY i.club
ORDER BY i.club;
输出
club count
Arsenal 60
Bournemouth 52
club count
Arsenal 5
Bournemouth 7
club count
Arsenal 5/60
Bournemouth 7/52
第二个是每个俱乐部的英国足球运动员的数量
SELECT COUNT(*) as count
FROM player_info i
WHERE i.region = 1
GROUP BY i.club
ORDER BY i.club;
输出
club count
Arsenal 60
Bournemouth 52
club count
Arsenal 5
Bournemouth 7
club count
Arsenal 5/60
Bournemouth 7/52
我如何划分它们以得到一个百分比?换句话说,
输出
club count
Arsenal 60
Bournemouth 52
club count
Arsenal 5
Bournemouth 7
club count
Arsenal 5/60
Bournemouth 7/52
到目前为止,我已经尝试使用联接,并将上述代码复制粘贴到一个大的SELECT()中,但错误是“子查询返回的行数超过1行。”
“SELECT”开头出现一些语法错误。条件聚合:
SELECT i.club, AVG(i.region = 1) AS percentage
FROM player_info i
GROUP BY i.club
ORDER BY i.club;
例如,请参见编辑。因为我按俱乐部添加了行顺序,因此两个输出的值将相互对应。谢谢,解决方案比我想象的要简单得多!然而,我仍然想从我做错的事情中吸取教训。你能指出我在问题中做错了什么吗?你发布的查询在语法上是无效的。其中一个错误是:
SELECT i.club,COUNT(*),x.COUNT/y.COUNT
后面应该跟一个FROM子句,并且在FROM子句之后应该有第一个子查询与第二个子查询交叉连接。但所有这些都是不必要的。我想借此机会问另一个相关的小问题,因为我认为我没有理由再写一篇文章。如果我通过查询COUNT(*)
查找每个俱乐部的球员人数,为什么COUNT(I.region=1)
查找每个俱乐部的所有英国球员人数不起作用?我不得不使用一个SUM(当I.region=1,然后1,否则0结束时)
。I.region=1
返回1(真)或0(假),因此count(I.region=1)将同时计算1和0,因为count()不计算空值。如果我理解正确,您是说count
计算行数,不管它们是1还是0,对吗?在这种情况下,我的另一个问题是,您是否有更简洁的方式来查询我想要的内容,而不是我上面写的SUM(case…
查询?我觉得可以改进,但不确定如何改进。